目录
目录
Selenium的介绍Selenium环境配置步骤
Selenium的安装
Driver的配置Python中如何使用
强制等待、隐式等待、显式等待强制等待
隐式等待显式等待
web控件定位与常见操作selenium点击与输入Xpath定位
Css Selector
selenium中使用 XPath 和 css selector web控件的交互进阶
Actions
表单操作
多窗口处理与网页frame 多窗口处理
多窗口处理流程frame处理
多浏览器运行
执行JavaScript脚本selenium中如何调用js 文件上传、弹框处理
文件上传
弹框处理机制PageObject设计模式
PageObject原则
Selenium的介绍
简介:
Selenium支持web浏览器的自动化。它主要由三个工具构成:WebDriver、IDE、Grid
官方网站
Selenium环境配置步骤
- 准备好python环境
- 准备好selenium环境
- 下载浏览器对应的driver版本
- driver配置环境变量
- 在python中import对应的依赖包
Selenium的安装
前提
配置好python环境配置好pip工具
安装
pip install selenium
或者在pycharm直接安装
Driver的配置
Driver的介绍
https://www.selenium.dev/documentation/en/webdriver/driver_requirements/
Driver的下载
淘宝镜像:https://npm.taobao.org/mirrors/chromedriver/
官方网站:https://chromedriver.storage.gooleapis.com/index.html
Driver的安装:
找到和自己浏览器版本适配的driver版本导入到环境变量中
Python中如何使用
import selenium from selenium import webdriver def test_selenium(): driver = webdriver.Chrome() driver.get('https://www.baidu.com')
强制等待、隐式等待、显式等待
强制等待是sleep,强烈不推荐,设定的时间太固定,如果是模拟器等待3秒,真机可能只需要等待2秒
driver.implicitly.wat(timeout) ,贯穿全部元素的等待,只需要设定一次即可,通常是在创建driver的时候后的代码运行,是dom建立之后的等待
显式等待是在客户端的等待:引用连个包和一个例子
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
WebDriverWait(self.driver,10).until(expected_conditions.element_to_be_clickable(loca
tor))
强制等待
强制等待,线程休眠一定时间
import time time.sleep(3)
隐式等待
隐式等待,就是在创建driver时,设置全局元素等待超时时间。当要查找元素,而这个元素没有马上出现时,告诉 WebDriver 查询 Dom 一定时间,实际上浏览器会在你自己设定的时间内不断的刷新页面去寻找我们需要的元素。默认值是 0.5秒,但是设置之后,这个时间将在WebDriver 对象实例整个生命周期都起作用。(处理 Table 对象时,需要将此设置为默认值)
self.driver.implicitly_wait(10)
设置等待时长为10秒,首先这10秒并非一个固定的等待时间,它并不影响脚本的执行速度。其次,它并不针对页面上的某一元素进行等待。当脚本执行到某个元素定位是,如果元素可以定位,则继续执行,如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到。假设在第六秒定位到了元素则继续执行,若直到超出设置的时长10秒还没有定位到元素,则抛出异常。
显式等待
显式等待的简介
- 显式等待与隐式等待相对,显式等待必须在每一个需要等待的元素前面进行声明
- 是针对某个特定的元素设置等待时间,在设置时间内,默认每隔一段时间检测一次当前某个元素是否存在
- 如果在规定的时间内找到元素,则直接执行,即找到元素就执行相关操作
- 如果超过设置时间检测不到就抛出异常,默认检测频率为0.5s,默认抛出的异常时NoSuchElementException
- 用到的两个常用类WebDriverWait expected_condition
为什么要用显式等待,为什么隐式等待无法替代显式等待
显式等待可以等待动态加载的ajax元素,需要配合expected_condition来检查条件
一般页面上元素的呈现顺序是
首先出现title
然后是dom树的出现,presence还不完整,dom树出现就是隐式等待了,但此时的元素可能还没有是可点击的状态,所以只用隐式等待,使用click方法,肯定会报错的
css出现:可见visbility
js的出现,js特效执行:可点击clickable html文档是自上而下加载的
js文件加载会阻塞html内容的加载,有些js异步加载的方式来完成js的加载 样式表下载完成之后跟之前的样式表一起进行解析,会对之前那的与元素重新渲染
presence-visibility-clickabe,元素出现-可见-可点击,是元素的三个性质,当DOM树出现时, 定位元素可能已经显示出来了,但是可见和可点击的属性可能还没加载出来,这时候元素的一些方法是不可用的,比如 element.click() ,要等到js渲染出来以后,元素的click属性才可以用
【关注+点赞+私信程序员一凡领取完整版PDF文档】 |
最后:
欢迎关注公众号:程序员一凡,领取一份300页pdf文档的Python自动化测试工程师核心知识点总结! 这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。