selenium findelements方法java

jdg4fx2g  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(367)

在我的项目中我使用 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年(描述)我可以用描述作为条件吗??

bjp0bcyl

bjp0bcyl1#

如果观察输出:

[[[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],...]

所有元素的链接文本都以年为单位。因此,您应该能够使用:

List<WebElement> h=driver.findElements(By.linkText("Years"));

但是,调用 click() 在某些元素上,dom树有时会发生更改,列表中保存的元素可能会变成过时的元素。
在这些情况下,打印链接名和Assert都可能失败。
因此,根据最佳实践,您可能希望 click() 在特定的 linkTexts 当必要的时候,我们就开始了。例如: cssSelector :

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("element_css"))).click();
``` `xpath` :

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("element_xpath"))).click();

yvfmudvl

yvfmudvl2#

所以我找不到原始问题的解决方案,但是对于更新后的问题,我只是迭代到列表的第二个元素,我使用:list h=driver.findelements(by.linktext(“years”);h、 获取(1),点击();虽然如果我能得到由搜索引擎生成的所有链接的目的地url会非常有效

相关问题