网页可以包含许多Web元素或GUI元素,例如单选按钮,文本框,下拉菜单,输入等。Selenium自动化测试中的Web定位器用于对页面的Web元素执行不同的操作。 毫不奇怪,作为新的Selenium用户,我们要学习的第一件事是Selenium Locators。
这些定位器是任何Selenium自动化测试框架的基础,无论您进行的测试类型是什么,从单元测试到端到端自动化跨浏览器测试。 使用了多种类型的定位器,例如CSS选择器,XPath,链接,文本,ID等。这是一些用于自动跨浏览器测试的流行定位器。 到目前为止,您可以在Selenium中获得8种类型的定位器。 但是,这个数字将在新的Selenium 4版本中更改。 想知道为什么吗?
好吧,使用Selenium 3.0,每个元素都可以单独访问,因为无法访问相对于附近元素的Web元素。 在这里,Selenium 4(Alpha)中的新定位器可以发挥作用,因为新的定位器方法使您可以基于相对于DOM中其他元素的可见位置来查找附近的元素。
是的! 你没听错。 Selenium 4将推出一个已经计划了很长时间的新定位器,现在称为相对定位器。 在本文中,我们将深入探讨如何使用最新的Selenium 4 Relative Locator进行日常自动化测试。
我们在之前的文章中介绍了Selenium 4可以提供的功能 。 在该帖子本身中,我们暗示我们将在新功能方面进行更多详细说明。 好吧,这是。
![](https://i-blog.csdnimg.cn/blog_migrate/002af01a6b8f3c4266b5df6e8a915630.gif)
下载硒4(Alpha)
毋庸置疑,最常用的Web自动化测试框架Selenium具有特殊的特殊功能,可广泛用于端到端测试,这些功能可提供无与伦比的自动化跨浏览器测试功能。 但是,最近的主要数字版本(即Selenium 3.0)已于3年前于2016年10月发布。尽管目前尚无发布日期,并且Selenium 4尚未正式发布,但您可以通过Selenium 4的Alpha进行先睹为快释放。
首先,您必须从Maven存储库下载Selenium 4 Alpha。 在作为本文的一部分介绍Selenium 4相对定位器功能时,最新版本是4.0.0-alpha-3。 由于这是Selenium的Alpha版本,因此,如果您不想在通过Selenium自动化测试进行验证时使用生产测试套件承担任何风险,建议您切换回稳定版本,即3.141.XX。
![](https://i-blog.csdnimg.cn/blog_migrate/99e9e4c7175ff9bea857b4c7ffc39d84.png)
Selenium 4相对定位器–方法
到目前为止,Selenium 4相对定位器方法支持withTagName属性的使用。 以下是可在Selenium自动化测试中使用的“相对定位器”选项:
相对定位器 |
描述 |
---|---|
以上 |
要搜索/定位的Web元素显示在指定元素的上方。 |
下面 |
要搜索/定位的Web元素显示在指定元素的下方。 |
toLeftOf |
要搜索/定位的Web元素显示在指定元素的左侧。 |
toRightOf |
要搜索/定位的Web元素显示在指定元素的右侧。 |
近 |
要搜索/定位的Web元素距离指定元素最多50个像素。 |
这是该实现的屏幕截图,着重介绍了Selenium自动化测试中相对定位器的用法( Source )。
![](https://i-blog.csdnimg.cn/blog_migrate/30464a5859e2684d59c25809fe1c0dd3.png)
如果您想知道Selenium是如何做到这一点的,那么可以借助名为getBoundingClientRect( )JavaScript方法来实现。 此JavaScript方法允许Selenium使用相对定位器进行Selenium测试来定位元素。
Selenium 4相对定位器–用法
Selenium 4中用于相对定位器的方法已重载,可以将相对WebElement或“按”定位器作为参数。 下面显示的是使用这两个选项进行Selenium自动化测试的相对定位器的示例用法:
WebElement txt_label = driver.findElement(By.cssSelector("label[id='uname']"));
WebElement txt_label = driver.findElement(withTagName("input").toRightOf(txt_label));
String txt_name = driver.findElement(withTagName("input").toLeftOf(By.id("some_button"))