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

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()
http://www.xdnf.cn/news/5191.html

相关文章:

  • CSS transition过渡属性
  • NXP iMX8MP ARM 平台多屏幕克隆显示测试
  • 辛格迪客户案例 | 天台山制药仓储管理系统(WMS)项目
  • 普通IT的股票交易成长史--20250509晚复盘
  • 读写锁简介
  • Java——反射
  • DeepSeek致谢腾讯!
  • 热蛋白质组分析(TPP)技术的优劣势探讨
  • EPS三维测图软件
  • CDGP重点知识梳理(82个)
  • 20250509 相对论中的\*\*“无空间”并非真实意义上的虚无,而是时空结构尚未形成\*\*的状态。 仔细解释下这个
  • (undone) MIT6.S081 Lec17 VM for APP 学习笔记
  • LeetCode面试题 17.21 直方图的水量
  • 基于扩展卡尔曼滤波(EKF)目标轨迹算法仿真实例
  • 五一旅游潮涌:数字化如何驱动智慧旅游升级
  • IP协议.
  • GUC并发编程和SpringCloud,二者之间的关系
  • MySQL核心内容【持续更新中】
  • Linux——MySQL基础
  • SSH(安全外壳协议)
  • O2OA(翱途)开发平台系统安全-用户登录IP限制
  • 从RR到RC:解析大厂数据库隔离级别变革的背后逻辑
  • ‌2.4G芯片无晶振方案的技术影响分析
  • istio in action之流量控制与路由
  • 深入理解 Istio v1.25.2
  • 后缀表达式+栈(详解)(c++)
  • 自由学习记录(59)
  • WHAT - Node vs Python 执行速度
  • 如何把win10 wsl的安装目录从c盘迁移到d盘
  • DevExpressWinForms-布局容器之PanelControl