我想知道我是否可以在断言中使用新的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则进行比较意味着至少发现了一件事。希望能帮助解释事情。值得深思的是:您的测试将如何在不同的设备/屏幕尺寸上执行?有了这个新的功能,测试响应式网站时,开发人员将有更多的考虑因素:)