我想知道我是否可以在断言中使用新的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:

<nav id="nav" ... />


然后编写测试以确保徽标在导航栏上方,您可以编写以下内容:

var myWonderfulLogo = driver.findElements(By.id("logo").above(By.id("nav")));
Assert.assertTrue(myWonderfulLogo.size() > 0);


如果徽标不在导航栏上方,则findElements将找不到任何元素,因此,如果徽标大于0则进行比较意味着至少发现了一件事。希望能帮助解释事情。

值得深思的是:您的测试将如何在不同的设备/屏幕尺寸上执行?有了这个新的功能,测试响应式网站时,开发人员将有更多的考虑因素:)

09-28 07:21