当前位置: 首页 > news >正文

web 自动化之 selenium 元素四大操作三大切换等待

文章目录

      • 一、元素的四大操作
      • 二、三大切换&等待
        • 1、切换窗口:当定位的元素不在当前窗口,则需要切换窗口
        • 2、切换iframe:当定位的元素在frame/iframe,则需要切换

一、元素的四大操作

1、输入
2、点击
3、获取文本
4、获取属性

import time
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver=webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
el1=driver.find_element(By.ID,"kw")
# 输入
el1.send_keys()
# 点击
el1.click()
# 获取元素文本内容
el2=driver.find_element(By.LINK_TEXT,"新闻")
print("打印该元素的文本内容:",el2.text)
# 获取元素的属性
print("获取autocomplete属性值:",el1.get_attribute("autocomplete"))

二、三大切换&等待

1、切换窗口:当定位的元素不在当前窗口,则需要切换窗口
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
"""
元素等待:
1、强制等待 time.sleep(秒数) 停留
2、智能等待(隐士等待) driver.implicitly_wait(秒数) 给页面上所有的元素设置全
局等待时间
只要在设置的时间范围内找到了元素,就会执行下一个代码,最多等待设置的时间
3、显示等待 显示等待:等待当前需要操作的元素 基于多种条件+等待元素
多种条件:等待元素可见?等待url跳转为xxx?等待新窗口出现?很多场景条件
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
自动化测试框架脚本:
以显示等待为主
以强制等待为辅
"""driver=webdriver.Chrome()
# 智能等待
# driver.implicitly_wait(10)
driver.get("https://www.baidu.com")
# 输入搜索内容
el1=driver.find_element(By.ID,"kw")
el1.send_keys("chrome")
#点击百度一下
el2=driver.find_element(By.ID,'su')
el2.click()
# 显示等待
loc=(By.XPATH,'//*[@id="2"]/div/h3/a')
# 等待元素存在
WebDriverWait(driver,15,1).until(ec.presence_of_element_located(loc))
# 点击搜索的内容
el3=driver.find_element(*loc)
el3.click()
# 新打开的窗口里面定位元素 需要切换窗口
# 获取浏览器窗口列表 最早打开的窗口放到list的最前面
wins=driver.window_handles
print(wins)
# 切换最后打开的窗口
driver.switch_to.window(wins[1])
el4=driver.find_element(By.XPATH,'//*[@id="J-lemma-main-wrapper"]/div[2]/div/div[1]/div/div[2]/div[1]/div/a[1]')
el4.click()
# 为了看到效果
time.sleep(3)
driver.close()
2、切换iframe:当定位的元素在frame/iframe,则需要切换
"""
定位的元素包含在iframe/frame标签里面
切换到iframe/frame
"""
import time
from selenium.webdriver.support import expected_conditions as ecfrom selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWaitdriver=webdriver.Chrome()
driver.get("https://www.csdn.net/")
driver.implicitly_wait(5)
driver.find_element(By.XPATH,'//a[@class="toolbar-btn-loginfun"]').click()
time.sleep(2)
# 切换iframe 方式一:id
# driver.switch_to.frame("id")
# 切换iframe 方式二:索引 索引值从0开始
# driver.switch_to.frame(3)
# 切换iframe 方式三:找到iframe元素
driver.switch_to.frame(driver.find_element(By.XPATH,'//*[@id="passportbox"]/iframe'))
# 再定位元素
driver.find_element(By.XPATH,'/html/body/div/div/div/div[2]/div[2]/div[1]/div[1]/span[3]').click()
time.sleep(2)
driver.close()

相关文章:

  • Oracle非归档模式遇到文件损坏怎么办?
  • AI NeRF:Meta实现手机端实时毛发渲染,开启移动AR/VR新纪元——从实验室到口袋:NeRF技术的轻量化革命
  • Android Handler 机制面试总结
  • 更新 / 安装 Nvidia Driver 驱动 - Ubuntu - 2
  • Shiro(八):JWT介绍
  • BP神经网络
  • c++:双向链表容器(std::list)
  • 【CTFSHOW_Web入门】命令执行
  • Unity按钮事件冒泡
  • 制作一款打飞机游戏42:敌人大脑
  • Unity3D实现Render Streaming推送视频流的解决方案
  • 【网络编程】四、守护进程实现 前后台作业 会话与进程组
  • 【强化学习】强化学习算法 - 马尔可夫决策过程
  • 可再生能源中的隔离栅极驱动器:光伏逆变器的游戏规则改变者
  • 数据防泄漏的解决方案
  • Java学习手册:单体架构到微服务演进
  • CSS vertical-align
  • SPN技术介绍
  • HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
  • RuntimeError: expected scalar type ComplexDouble but found Float
  • 上财发布“AI+课程体系”,人工智能如何赋能财经教育?
  • 央行设立服务消费与养老再贷款,额度5000亿元
  • 全国人大常委会启动食品安全法执法检查
  • 明明睡够了,怎么还有黑眼圈?可能是身体在求救
  • 融创中国:今年前4个月销售额约112亿元
  • 教育部、国家发改委联合启动实施教师教育能力提升工程