[跟着官方文档学Selenium][学习笔记][四][WebDriver的功能]

网友投稿 1118 2022-05-29

浏览器间共享的功能

这些功能用于所有浏览器。为了通过Selenium WebDriver创建新会话,本地端应向远程端提供基本功能。远端使用相同的功能集来创建会话并描述当前会话功能。

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

browserName

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

EdgeOptions edgeOptions = new EdgeOptions(); String browserName = edgeOptions.getBrowserName(); System.out.println(browserName);//MicrosoftEdge

browserVersion

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

页面加载策略

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

代码示例

[跟着官方文档学Selenium][学习笔记][四][WebDriver的功能]

import org.openqa.selenium.PageLoadStrategy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public class pageLoadStrategy { public static void main(String[] args) { EdgeOptions edgeOptions = new EdgeOptions(); //edgeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL); //edgeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER); edgeOptions.setPageLoadStrategy(PageLoadStrategy.NONE); WebDriver webDriver = new EdgeDriver(edgeOptions); try { webDriver.get("https://www.baidu.com/"); } finally { webDriver.quit(); } } }

platformName

这标识了远端的操作系统,获取platformName将返回操作系统的名称,在基于云的供应商中,设置platformName将在远端设置操作系统

acceptInsecureCerts

这功能检查在会话期间导航时,是否使用了过期的或者无效的TLS Certificate。

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

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

timeouts

WebDriver的session具有一定的session timeout间隔,在此间隔中,用户可以控制执行脚本或从浏览器检索信息的行为。每个会话超时都配置有不同的timeouts组合,如下3项所述

Script Timeout

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

Page Load Timeout

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

Implicit Wait Timeout

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

unhandledPromptBehavior

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

User Prompt Handler

这定义了在远端出现用户提示时必须采取的措施。该行为由unhandledPromptBehavior功能定义,具有5种状态:dismiss,accept,dismiss and notify,accept and notify,ignore。

setWindowRect

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

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

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

strictFileInteractability

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

proxy

代理服务器充当客户端和服务器之间的请求中介。简述而言,流量将通过代理服务器流向您请求的地址,然后返回。使用代理服务器用于Selenium的自动化脚本,可能对以下方面有益:捕获网络流量、模拟网站后端相应、在复杂的网络拓扑结构或严格的公司限制/政策下访问目标站点。

如果您在公司环境中,并且浏览器无法连接到URL,则最有可能是因为环境,需要借助代理进行访问。

Selenium WebDriver设置代理代码如下:

import org.openqa.selenium.Proxy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public class testProxy { public static void main(String[] args) { //导包注意导入selenium的Proxy包 Proxy proxy = new Proxy(); proxy.setHttpProxy(""); EdgeOptions edgeOptions = new EdgeOptions(); edgeOptions.setCapability("proxy", proxy); WebDriver webDriver = new EdgeDriver(edgeOptions); webDriver.get("https://www.baidu.com"); webDriver.manage().window().maximize(); webDriver.quit(); System.out.println("WebDriver Quit"); } }

Chromium

上述的浏览器所共享的功能适用于:Chrome、Chromium、Edge。

Firefox

使用FirefoxOptions定义功能

FirefoxOptions是为了Firefox浏览器定义功能的新方法,通常应优先使用预期功能(DesiredCapabilities)。

WebDriver webDriver; FirefoxOptions options = new FirefoxOptions(); options.addPreference("network.proxy.type", 0); webDriver = new RemoteWebDriver(options);

设置自定义配置文件

可以为Firefox创建自定义配置文件

WebDriver webDriver; FirefoxProfile profile = new FirefoxProfile(); FirefoxOptions options = new FirefoxOptions(); options.setProfile(profile); webDriver = new RemoteWebDriver(options);

Selenium

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【亚马逊AWS】IAM机翻
下一篇:对象的共享
相关文章