Assert + Selenium 4 相对定位器

Assert + Selenium 4 relative locators

我想知道我是否可以在我的断言中使用新的 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 元素。所有相对定位器正在做的是进一步限制常规位置(xpaths,按 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 意味着至少找到了一个东西。希望这有助于解释事情。

额外的思考:您的测试将如何在不同的 devices/screen 尺寸上执行?有了这个新添加的测试开发人员在测试响应式网站时将有更多的考虑:)