Selenium FindElements method Java



在我的项目中,我使用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:年ABC(说明(

链接2:年XYZ(描述(我可以用这个描述作为条件吗??

如果您观察到输出:

[[[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树,列表中保存的元素可能会变成过时元素

在这些情况下,打印链接名称和断言都可能失败。

因此,根据最佳实践,您可能希望在引发WebDriverWait的必要性出现时,在特定的linkTexts上调用click()。例如:

  • 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();
    

所以我找不到原始问题的解决方案,但对于更新后的问题,我只是迭代到我使用的列表的第二个元素:list h=driver.findElements(By.linkText("Years"(;h.get(1(.click((;尽管如果我能得到搜索引擎生成的所有链接的目的地URL,那将是非常有效的

相关内容

  • 没有找到相关文章

最新更新