Selenium 4 相对定位器(友好定位器)
相对定位器是友好定位器的旧名称。相对定位器用于相对于另一个组件的位置来定位某个组件或元素。有五种不同的技术和两种不同的论据可供选择。可能会使用 Web Element 组件边界或 by-finder 边界。下面是相对定位器的列表:
-
above(): 查找位于有效组件上方的组件或组件集。
-
below(): 在适当的组件下查找一个组件或一组组件。
-
near(): 查找靠近固定组件的组件(或一组组件)。
-
toLeftOf(): 在正确组件的左侧定位一个或多个组件。
-
toRightOf(): 在有效组件的右侧找到一个组件(或多个组件)。
相对定位器连接 Selenium 的 8 个定位器的当前类别:id、className、CSS 选择器、linkText、名称、部分链接文本、tagName 和 XPath。找出在哪里寻找组件是自动化工程师的首要职责之一。
导入相对定位器
相对定位器中有两个导入声明。第一个导入声明是静态的,而第二个不是。我们的相对定位器的语法受到这种差异的影响。
在一个声明中,我们可以在 import 语句中使用 static,但不能在另一个声明中使用。如果我们没有在导入声明中使用静态,我们的代码将如下所示:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--5rZcWULa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/et72cnog22027sh6purh.png)
值得注意的是导入声明 org.openqa.selenium.support.locators。相对定位器;在 IntelliJ IDE 中,这个包被自动导入作为一个方便的解决方案。该软件包可用于构建驱动程序。 findElement(RelativeLocator.withTagName(“”))。这是正确的,并且会正常工作。无论如何,如下图所示,我们可以用 TagName 开始我们的句子:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--lzh9Sc-9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/zn0lwirob9us341zrs3i.png)
如果我们不更改我们的导入语句并删除RelativeLocator。在 withTagName("") 之前,我们会收到一条错误消息,提示“该技术 withTagName(String) 未定义或未针对该类型解析”。
为了找出问题的根源,我们在包之前的 import 语句中使用静态。以点管理员 (.) 和 (*) 或 withTagName(" ") 结尾,如下所示:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--JXmw9_dB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/9827wgy4wlukhjiotj5m.png)
使用相对定位器
相对定位器技术在 Selenium 4 中被过度使用,它们可以将相对 WebElement 或 By 定位器作为输入。下面的代码说明了如何使用相对定位器:[
](https://res.cloudinary.com/practicaldev/image/fetch/s--z5Y6URKW--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b43ah9hupjrmopgnqxzq.png)
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--Bi3VhqRF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/tbsdelkziciosuzm3l84.png)
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--mIXQjN8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/2tt36jprrxarxyrtt1dr.png)
-
Xpath 定位提交按钮元素。
-
下一个脚本使用标签名称输入来发现元素。
-
提交按钮上方是元素输入。
-
消息最终被输入到消息框中。

使用相对定位器查找 Web 元素列表
我们可以使用相对定位器来查找 Web 元素列表,其方式与查找单个元素的方式相同。我们可以使用相对定位器来定位示例中的所有社交图标:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--3IhX9TzH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/jzlj9taq9562pomlmkic.png)
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--zWexZp8S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/6gwgncwoafs9kn1t5vk8.png)
由于 Selenium 4 中引入了相对定位器,设计人员现在可以使用更少的代码行访问本地 Web 组件。由于这是 Alpha 版本,后续版本中的亮点可能会发生变化。值得注意的是,在 Selenium 4 中,上面、下面、toLeftOf、toRightOf 和 close 等技术不适用于覆盖组件。
Selenium 4 对于使用 Selenium 和 Java 进行自动化跨程序测试 (Alpha) 的每个人来说都是必备的。但是,诸如 Selenium 4 相对定位器(开源和商业)之类的设备具有优势。 Selenium 4 带有一系列新功能(包括更新的文档),让等待变得值得。
更多推荐

所有评论(0)