等待
WebDriver通常可以说有一个阻塞API。
为了克服浏览器和WebDriver脚本之间的竞争问题,大多数selenium客户都附带了一个wait包。在使用等待时,您使用的是通常所说的显式等待。
显示等待
显示等待是Selenium客户可以使用的命令式过程语言。它们允许您的代码暂停程序执行,或冻结线程,直到满足通过的条件。这个条件会以一定的频率一直被调用,直到等待超时。这意味着只要条件返回一个价值,它就会一直尝试或等待。
隐式等待
通过隐式等待,WebDriver在试图查找_任何_元素时在一定时间内轮询DOM。当网页上的某些元素不是立即可用并且需要一些时间来加载时是很有用的。
默认情况下隐式等待元素出现是禁用的,它需要在单个会话的基础上手动启用。
警告:不要混合使用隐式和显式等待。这样做会导致不可预测的等待时间。
from selenium import webdriver driver=webdriver.Chrome() driver.implicitly_wait(120) driver.get("https://www.baidu.com") driver.quit()
流畅等待
流畅等待实例定义了等待条件的最大时间量,以及检查条件的频率。
用户可以配置等待来忽略等待时出现的特定类型的异常,例如在页面上搜索元素时出现的NoSuchElementException
支持的类
WebDriver提供了一些用于简化代码维护的类,其提供了一种不错的抽象,使得将HTML元素建模为域对象的操作,变得更加容易,还提供了一些更有帮助的方法,使用此类对象时更容易操作。
JavaScript警告框,提示框和确认框
WebDriver提供了一个API,用于处理JavaScript提供的三种类型的原生弹窗消息,这些弹窗由浏览器提供限定的样式。
Alerts警告框
Confirm确认框
Prompt提示框
Http代理
代理服务器充当客户端和服务器之间的请求中介。简述而言,流量将通过代理服务器流向您请求的地址,然后返回。
使用代理服务器用于Selenium的自动化脚本,可能对以下方面有益:
- 捕获网络流量
- 模拟网站后端响应
- 在复杂的网络拓扑结构或严格的公司限制/政策下访问目标站点
页面加载策略
定义当前会话的页面加载策略。默认情况下,当selenium webdriver加载页面时,遵循normal的页面加载策略。
normal
此配置使selenium webdriver等待整个页面的加载。设置为normal时,selenium webdriver将保持等待,直到返回load事件。
eager
这将使selenium webdriver保持等待,直到完全加载并解析了HTML文档,该策略无关样式表,图片和subframes的加载。
设置为eager时,selenium webdriver保持等待,直至返回DOMContentLoaded事件。
none
设置为none时,selenium webdriver仅等待至初始页面下载完成。
网络元素
Find Element
此方法用于查找元素并返回第一个匹配的单个WebElement引用,该元素可用于进一步的元素操作。
Find Elements
返回的是列表。
Find Element From Element
此方法用于在父元素的上下文中查找子元素。
Find Elements From Element
此方法用于在父元素的上下文中查找匹配子WebElement的列表。
Get Active Element
此方法用于追溯或查找当前页面上下文中具有焦点的DOM元素。
Is Element Enabled
此方法用于检查网页上连接的元素是否被启用或禁用。返回一个布尔值,如果在当前浏览上下文中启用了连接的元素,则返回True;否则返回false.
Is Element Selected
Get Element TagName
Keyboard
Keyboard代表一个键盘事件。keyboard操作通过使用底层接口允许我们向web浏览器提供虚拟设备输入。
sendKeys
keyDown
keyDown用于模拟按下辅助按键(CONTROL,SHIFT,ALT)的动作。
keyUp
keyUp用于模拟辅助按键(CONTROL,SHIFT,ALT)弹起或释放的操作。
clear
清除可编辑元素的内容
远程WebDriver
您可以如本地一样,使用远程WebDriver,主要区别在于需要配置远程WebDriver,以便可以在不同的计算机上运行测试。