在我的项目中我使用 findElement(By.linkText("")).click();
但是在我使用的网页中,许多链接都有相同的名称(顺便说一句,我只能使用by.linktext),所以我想知道是否可以在具有相同名称的链接之间导航
当我使用 List<WebElement> h=driver.findElements(By.linkText("Years"));
并打印:
[[[FirefoxDriver: firefox on LINUX (f5681889-d73a-4a0f-88e9-2e189491049b)] -> link text: Years],[[[FirefoxDriver: firefox on LINUX (f5681889-d73a-4a0f-88e9-2e189491049b)] -> link text: Years],[[[FirefoxDriver: firefox on LINUX (f5681889-d73a-4a0f-88e9-2e189491049b)] -> link text: Years],
更新:在我工作的页面上,每两个相同名称的链接文本就是我想去的地方,除了它们的描述外,这些链接也没有任何区别,例如:链接1:years (描述)
链接2:xyz年(描述)我可以用描述作为条件吗??
2条答案
按热度按时间bjp0bcyl1#
如果观察输出:
所有元素的链接文本都以年为单位。因此,您应该能够使用:
但是,调用
click()
在某些元素上,dom树有时会发生更改,列表中保存的元素可能会变成过时的元素。在这些情况下,打印链接名和Assert都可能失败。
因此,根据最佳实践,您可能希望
click()
在特定的linkTexts
当必要的时候,我们就开始了。例如:cssSelector
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("element_xpath"))).click();
yvfmudvl2#
所以我找不到原始问题的解决方案,但是对于更新后的问题,我只是迭代到列表的第二个元素,我使用:list h=driver.findelements(by.linktext(“years”);h、 获取(1),点击();虽然如果我能得到由搜索引擎生成的所有链接的目的地url会非常有效