获取浏览器信息
获取标题
从浏览器中读取当前页面的标题:
获取当前 URL
您可以从浏览器的地址栏读取当前的 URL,使用:
从浏览器中读取当前页面的标题:
您可以从浏览器的地址栏读取当前的 URL,使用:
启动浏览器后你要做的第一件事就是打开你的网站。这可以通过一行代码实现:
按下浏览器的后退按钮:
按下浏览器的前进键:
刷新当前页面:
WebDriver提供了一个API, 用于处理JavaScript提供的三种类型的原生弹窗消息. 这些弹窗由浏览器提供限定的样式.
其中最基本的称为警告框, 它显示一条自定义消息, 以及一个用于关闭该警告的按钮, 在大多数浏览器中标记为"确定"(OK). 在大多数浏览器中, 也可以通过按"关闭"(close)按钮将其关闭, 但这始终与“确定”按钮具有相同的作用. 查看样例警告框.
WebDriver可以从弹窗获取文本并接受或关闭这些警告.
确认框类似于警告框, 不同之处在于用户还可以选择取消消息. 查看样例确认框.
此示例还呈现了警告的另一种实现:
提示框与确认框相似, 不同之处在于它们还包括文本输入. 与处理表单元素类似, 您可以使用WebDriver的sendKeys来填写响应. 这将完全替换占位符文本. 按下取消按钮将不会提交任何文本. 查看样例提示框.
Cookie是从网站发送并存储在您的计算机中的一小段数据. Cookies主要用于识别用户并加载存储的信息.
WebDriver API提供了一种使用内置的方法与Cookie进行交互:
这个方法常常用于将cookie添加到当前访问的上下文中. 添加Cookie仅接受一组已定义的可序列化JSON对象. 这里 是一个链接, 用于描述可接受的JSON键值的列表
首先, 您需要位于有效Cookie的域上. 如果您在开始与网站进行交互之前尝试预设cookie, 并且您的首页很大或需要一段时间才能加载完毕, 则可以选择在网站上找到一个较小的页面 (通常404页很小, 例如 http://example.com/some404page)
此方法返回与cookie名称匹配的序列化cookie数据中所有关联的cookie.
此方法会针对当前访问上下文返回“成功的序列化cookie数据”. 如果浏览器不再可用, 则返回错误.
此方法删除与提供的cookie名称匹配的cookie数据.
此方法删除当前访问上下文的所有cookie.
此属性允许用户引导浏览器控制cookie, 是否与第三方站点发起的请求一起发送. 引入其是为了防止CSRF(跨站请求伪造)攻击.
Same-Site cookie属性接受以下两种参数作为指令
当sameSite属性设置为 Strict, cookie不会与来自第三方网站的请求一起发送.
当您将cookie sameSite属性设置为 Lax, cookie将与第三方网站发起的GET请求一起发送.
注意: 到目前为止, 此功能已在Chrome(80+版本), Firefox(79+版本)中提供, 并适用于Selenium 4以及更高版本.
框架是一种现在已被弃用的方法,用于从同一域中的多个文档构建站点布局。除非你使用的是 HTML5 之前的 webapp,否则你不太可能与他们合作。内嵌框架允许插入来自完全不同领域的文档,并且仍然经常使用。
如果您需要使用框架或 iframe, WebDriver 允许您以相同的方式使用它们。考虑 iframe 中的一个按钮。 如果我们使用浏览器开发工具检查元素,我们可能会看到以下内容:
如果不是 iframe,我们可能会使用如下方式点击按钮:
但是,如果 iframe 之外没有按钮,那么您可能会得到一个 no such element 无此元素 的错误。 这是因为 Selenium 只知道顶层文档中的元素。为了与按钮进行交互,我们需要首先切换到框架, 这与切换窗口的方式类似。WebDriver 提供了三种切换到帧的方法。
使用 WebElement 进行切换是最灵活的选择。您可以使用首选的选择器找到框架并切换到它。
如果您的 frame 或 iframe 具有 id 或 name 属性,则可以使用该属性。如果名称或 id 在页面上不是唯一的, 那么将切换到找到的第一个。
还可以使用frame的索引, 例如可以使用JavaScript中的 window.frames 进行查询.
离开 iframe 或 frameset,切换回默认内容,如下所示:
无论是共享信息还是维护档案,打印网页都是一项常见任务。 Selenium 通过其 PrintOptions、PrintsPage 和 browsingContext 类简化了这一过程,这些类为网页自动打印提供了灵活直观的接口。 这些类使得用户可以配置打印首选项,如页面布局、页边距和缩放比例,以确保输出满足特定要求。
通过 getOrientation()
和 setOrientation()
方法,可以获取/设置页面方向(PORTRAIT
或 LANDSCAPE
)。
通过 getPageRanges()
和 setPageRanges()
方法,可以获取设置要打印页面的范围(如 “2-4”)。
通过 getPageSize()
和 setPageSize()
方法,可以获取/设置要打印页面的纸张尺寸(如"A0"、“A6”、“Legal”、“Tabloid” 等)。
通过 getPageMargin()
和 setPageMargin()
方法,可以获取/设置要打印页面的边距大小(也就是上、下、左右边距)。
通过 getScale()
和 setScale()
方法,可以获取/设置要打印页面的缩放尺寸(如 1.0 为 100% 或默认缩放,0.25 为 25% 等)。
通过 getBackground()
和 setBackground()
方法,可以获取/设置背景色和图片出现,其为布尔值 true
或 false
。
通过 getShrinkToFit()
和 setShrinkToFit()
方法,可以获取/设置页面是否会根据页面内容缩小,其为布尔值 true
或 false
。
配置好打印选项后,就可以打印页面了。为此,您可以调用打印功能,生成网页的 PDF 表示形式。
生成的 PDF 文件可以保存到本地存储器中,以便进一步使用或分发。
使用 PrintsPage()
时,打印命令将以 base64 编码格式返回 PDF
数据,该格式可以解码并写入所需位置的文件,而使用 BrowsingContext()
时将返回字符串。
目前可能有多种实现方式,这取决于您所选择的语言。例如,Java 可以使用 BrowingContext()
或 PrintsPage()
进行打印。两者都将 PrintOptions()
对象作为一个参数。
注意:BrowsingContext()
是 Selenium BiDi 实现的一部分。为启用 BiDi,请参见启用 Bidi
WebDriver 没有区分窗口和标签页。如果你的站点打开了一个新标签页或窗口,Selenium 将允许您使用窗口句柄来处理它。 每个窗口都有一个唯一的标识符,该标识符在单个会话中保持持久性。你可以使用以下方法获得当前窗口的窗口句柄:
单击在 <a href=“https://seleniumhq.github.io"target="_blank”>新窗口 中打开链接, 则屏幕会聚焦在新窗口或新标签页上,但 WebDriver 不知道操作系统认为哪个窗口是活动的。 要使用新窗口,您需要切换到它。 如果只有两个选项卡或窗口被打开,并且你知道从哪个窗口开始, 则你可以遍历 WebDriver, 通过排除法可以看到两个窗口或选项卡,然后切换到你需要的窗口或选项卡。
不过,Selenium 4 提供了一个新的 api NewWindow 它创建一个新选项卡 (或) 新窗口并自动切换到它。
当你完成了一个窗口或标签页的工作时,_并且_它不是浏览器中最后一个打开的窗口或标签页时,你应该关闭它并切换回你之前使用的窗口。 假设您遵循了前一节中的代码示例,您将把前一个窗口句柄存储在一个变量中。把这些放在一起,你会得到:
如果在关闭一个窗口后忘记切换回另一个窗口句柄,WebDriver 将在当前关闭的页面上执行,并触发一个 No Such Window Exception 无此窗口异常。必须切换回有效的窗口句柄才能继续执行。
创建一个新窗口 (或) 标签页,屏幕焦点将聚焦在新窗口或标签在上。您不需要切换到新窗口 (或) 标签页。如果除了新窗口之外, 您打开了两个以上的窗口 (或) 标签页,您可以通过遍历 WebDriver 看到两个窗口或选项卡,并切换到非原始窗口。
注意: 该特性适用于 Selenium 4 及其后续版本。
当你完成了浏览器会话,你应该调用 quit 退出,而不是 close 关闭:
调用 quit() 失败将留下额外的后台进程和端口运行在机器上,这可能在以后导致一些问题。
有的测试框架提供了一些方法和注释,您可以在测试结束时放入 teardown() 方法中。
如果不在测试上下文中运行 WebDriver,您可以考虑使用 try / finally
,这是大多数语言都提供的,
这样一个异常处理仍然可以清理 WebDriver 会话。
Python 的 WebDriver 现在支持 Python 上下文管理器,当使用 with 关键字时,可以在执行结束时自动退出驱动程序。
屏幕分辨率会影响 web 应用程序的呈现方式,因此 WebDriver 提供了移动和调整浏览器窗口大小的机制。
获取浏览器窗口的大小(以像素为单位)。
恢复窗口并设置窗口大小。
获取浏览器窗口左上角的坐标。
将窗口移动到设定的位置。
扩大窗口。对于大多数操作系统,窗口将填满屏幕,而不会阻挡操作系统自己的菜单和工具栏。
最小化当前浏览上下文的窗口. 这种命令的精准行为将作用于各个特定的窗口管理器.
最小化窗口通常将窗口隐藏在系统托盘中.
注意: 此功能适用于Selenium 4以及更高版本.
填充整个屏幕,类似于在大多数浏览器中按下 F11。
用于捕获当前浏览上下文的屏幕截图. WebDriver端点 屏幕截图 返回以Base64格式编码的屏幕截图.
用于捕获当前浏览上下文的元素的屏幕截图. WebDriver端点 屏幕截图 返回以Base64格式编码的屏幕截图.
在当前frame或者窗口的上下文中,执行JavaScript代码片段.
打印当前浏览器内的页面
注意: 此功能需要无头模式下的Chromium浏览器
Web 应用程序可以启用基于公钥的身份验证机制(称为 Web 身份验证)以无密码方式对用户进行身份验证。 Web 身份验证 定义了允许用户创建公钥凭据并将其注册到身份验证器的 API。 身份验证器可以是硬件设备或软件实体,用于存储用户的公钥凭证并根据请求检索它们。
顾名思义,虚拟身份验证器模拟此类身份验证器进行测试。
虚拟身份验证器具有 一组属性。 这些属性在 Selenium 绑定中映射为 VirtualAuthenticatorOptions。
它使用提供的属性创建一个新的虚拟身份验证器。
删除之前添加的虚拟身份验证器。
使用给定的所需凭据 参数 创建一个永久(有状态的)凭据。
使用给定的所需凭据 参数 创建一个常驻(无状态)凭据。
向身份验证器注册凭据。
返回身份验证者拥有的凭据列表。
根据传递的凭据ID从身份验证器中删除凭据。
从身份验证器中删除所有凭据。
设置身份验证器是模拟用户验证成功还是失败。
Learn more or view the full list of sponsors.