共享的功能

为了通过Selenium WebDriver创建新会话, 本地端应向远程端提供基本功能. 远端使用相同的功能集来创建会话并描述当前会话功能.

WebDriver提供了每个远程端将 (或应该) 支持实现的功能. 以下是WebDriver支持的功能:

browserName:

此功能用于设置既定会话的 browserName . 如果未在远端安装指定的浏览器, 则会话创建将失败

browserVersion:

此功能是可选的, 用于在远程端设置可用的浏览器版本. 例如, 如果在仅安装80版本的系统上询问75版本的Chrome, 则会话创建将失败

页面加载策略

通过URL导航到新页面时, 默认情况下, Selenium将等待页面完全加载后再进行响应. 这对于初学者来说效果很好, 但是在加载大量第三方资源的页面上可能会导致较长的等待时间. 在这种情况下, 使用非默认策略可以使测试的执行速度更快, 但是也可能导致不稳定, 即页面上的元素随元素加载和大小变化而改变位置.

页面加载策略可以参考链接 document.readyState 如下述表格的描述:

策略准备完成的状态备注
normalcomplete默认情况下使用, 等待所有资源下载完成
eagerinteractiveDOM访问已准备就绪, 但其他资源 (如图像) 可能仍在加载中
noneAny完全不阻塞WebDriver

platformName

这标识了远端的操作系统, 获取 platformName 将返回操作系统的名称.

在基于云的供应者中, 设置 platformName 将在远程端设置操作系统.

acceptInsecureCerts

此功能检查在会话期间导航时 是否使用了过期的 (或) 无效的 TLS Certificate .

如果将功能设置为 false, 则页面浏览遇到任何域证书问题时, 将返回insecure certificate error . 如果设置为 true, 则浏览器将信任无效证书.

默认情况下, 此功能将信任所有自签名证书. 设置后, acceptInsecureCerts 功能将在整个会话中生效.

Session timeouts

WebDriver session 具有一定的 session timeout 间隔, 在此间隔内, 用户可以控制执行脚本或从浏览器检索信息的行为.

每个会话超时都配置有不同 timeouts 的组合, 如下所述:

Script Timeout:

指定在当前浏览上下文中, 中断正在执行脚本的时机. WebDriver创建新会话时, 将设置默认的超时时间为 30,000 .

Page Load Timeout:

指定在当前浏览上下文中, 加载网页的时间间隔. WebDriver创建新会话时, 默认设置超时时间为 300,000 . 如果页面加载限制了给定 (或默认) 的时间范围, 则该脚本将被 TimeoutException 停止.

Implicit Wait Timeout

指定在定位元素时, 等待隐式元素定位策略的时间. WebDriver创建新会话时, 将设置默认超时时间为 0 .

unhandledPromptBehavior

指定当前会话 user prompt handler 的状态. 默认为 dismiss and notify state .

User Prompt Handler

这定义了在远端出现用户提示时必须采取的措施. 该行为由unhandledPromptBehavior 功能定义, 具有以下状态:

  • dismiss
  • accept
  • dismiss and notify
  • accept and notify
  • ignore

setWindowRect

此命令更改当前浏览上下文中窗口的大小和位置. 此命令作为 getWindowRect 对应的设置方法, 该命令接受 width, height, x, y 作为 可选 参数.

在自动化期间, 当前浏览上下文将与描述浏览器窗口可见性状态的窗口状态相关联. 窗口状态为

  • maximized
  • minimized
  • normal
  • fullscreen

设置 WidthHeight 不能保证结果窗口的大小一定完全匹配所请求的窗口大小. 这是因为某些驱动程序可能无法以单像素为单位调整大小. 因此, 通过 getWindowRect 获取窗口状态 (或详细信息) 可能与浏览器设置的值不匹配.

strictFileInteractability

新功能用于是否对 类型为文件的输入(input type=file) 元素进行严格的交互性检查. 默认关闭严格性检查, 在将 元素的Send Keys 方法作用于隐藏的文件上传时, 会有控制方面的行为区别.