我想知道我是否可以在断言中使用新的Selenium 4相对定位符。
例如类似这样的内容:
Assert.assertTrue("", myWonderfulLogo.above(myWonderfulNavBar));
有一种弯曲的方法可以做到这一点,但我想知道是否有更简单的方法可以做到这一点:https://github.com/angiejones/selenium-relative-locators/blob/master/src/test/java/books/RelativeLocatorsTests.java
提前感谢!
如果您的目标是编写测试以查看myWonderfulLogo
是否高于myWonderfulNavBar
,则相对定位符可以为您提供帮助,尽管首先需要将其转换为Web元素。所有相对定位器正在做的事情是进一步限制常规位置(xpath,按id,按名称,css选择器等)。
例如,如果我想查找具有特定id的元素,但是我只想查找某个特定元素之上的元素(而不是搜索整个文档),那么相对定位符就可以了。
说您的myWonderfulLogo
具有以下html:
<img id="logo" ... />
并且您的myWonderfulNavBar
具有以下html:
<img id="nav" ... />
然后编写测试以确保您的徽标位于导航栏上方,您可以编写如下内容:
var myWonderfulLogo = driver.findElements(By.id("logo").above(By.id("nav")));
Assert.assertTrue(myWonderfulLogo.size() > 0);
如果您的徽标不在导航栏上方,则findElements
将找不到任何元素,因此比较它是否大于0意味着至少发现了一件事。希望能帮助解释问题。
值得深思的是:您的测试如何在不同的设备/屏幕尺寸上进行?有了这个新的功能,测试响应式网站时,开发人员将有更多的思考:)