目录
目录css
Selenium的介绍Selenium环境配置步骤html
Selenium的安装python
Driver的配置Python中如何使用程序员
强制等待、隐式等待、显式等待强制等待web
隐式等待显式等待面试
web控件定位与常见操做selenium点击与输入Xpath定位ajax
Css Selectorsql
selenium中使用 XPath 和 css selector web控件的交互进阶chrome
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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。