【问题标题】:How to access the link by searching its text in Selenium WebDriver?如何通过在 Selenium WebDriver 中搜索其文本来访问该链接?
【发布时间】:2014-03-14 04:12:41
【问题描述】:

我在网页的树结构中有一个 HTML 文件层次结构 如图所示。

HTML代码是

<div class="rtMid rtSelected">
    < span class="rtSp"/>
    < img class="rtImg" alt="Automation" src="http://192.168.1.6/eprint_prod_3.8/images/StoreImages/close_folder.png"/>
    < span class="rtIn" title="Automation">Automation (1)</span>
</div>

在 Selenium WebDriver 中,有没有一种方法可以通过仅搜索我不想使用 XPath 的文本来单击 Automation (1) 链接,原因是位置会发生变化,所以有没有办法通过它的文本找到它和点击它。

【问题讨论】:

标签: java selenium xpath selenium-webdriver webdriver


【解决方案1】:

XPath 很强大,你发现它不可靠你没有正确使用它。请花一些时间在XPath Tutorial

这是您问题的简单解决方案,但您可能需要考虑许多其他事情。例如。匹配标题和文字等。

driver.findElement(By.xpath(".//span[text()='Automation (1)']")).click();

CSS 选择器也比 XPath 更强大、更快、更易读。但在你的情况下,它不支持按文本查找。

【讨论】:

  • 你能推荐一个我试过的代码 driver.findElement(By.partialLinkText("Automation")).click();
  • @Santhosh.S:确保这只匹配一个元素。如果有其他元素具有相同的文本,则需要提供更多 HTML。上面的答案提供了 exact 匹配。
  • @Santhosh.S:不,这不是完整的代码。您需要为所有文件夹节点提供 HTML。但是先尝试精确匹配,如果不起作用,请调试原因。
【解决方案2】:

按标题搜索效果很好

driver.findElement(By.xpath("//span[contains(@title,'Automation')]")).click();

【讨论】:

    【解决方案3】:

    2 种方法

    方法一:

    按类名:

    这里我们有文本自动化 (1) 的类名称,即 rtIn。 执行 driver.findElement(By.className("rtIn")).click();

    方法二:

    通过父类和类名的 CSS 选择器

    父级的CSS选择器:.rtSelected

    WebElement element1 = driver.findElement(By.cssSelector(".rtSelected")) element1.className("rtIn").click();

    方法3:

    通过直接 CSS 选择器: 1. .rtIn 2. .rtSelected > .rtIn

    最好使用第二个 CSS 选择器

    driver.findElement(By.cssSelector(".rtSelected > .rtIn")).click();

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多