【问题标题】:How to deal with Dynamically changing class names in HTML source code while automating using Selenium WebDriver如何在使用 Selenium WebDriver 自动化的同时处理 HTML 源代码中动态更改的类名
【发布时间】:2016-09-26 11:27:08
【问题描述】:

如何在使用 Selenium WebDriver 自动化的同时处理 HTML 源代码中动态更改的“类名”或“ids”

应用示例:GMAIL

【问题讨论】:

  • 到目前为止你尝试了什么?并且需要在这里共享 HTML 代码而不是屏幕截图..
  • 更具体地说明问题是什么,您需要选择什么。您可以使用您知道或不变的部件/属性。出于自动化目的,这将是一个很好的开始如果你能找到任何你可以使用的 api。还要确保你真的可以使用 gmail 进行自动化,并且你没有任何限制,比如如果你做太多请求,你可能会被阻止。

标签: java selenium xpath dynamic selenium-webdriver


【解决方案1】:

如果您知道单元格索引,那么使用 XPath 或 cssSelector 将解决问题。在上面的屏幕截图中,很明显文本“Wordpress”位于每个表格行的第 5 个单元格中/因此您可以使用 XPath 下方获取特定单元格。

List<WebElement> cellValue = driver.findElements(By.xpath(".//table/descendant::tr/following-sibling::td[5]"));

【讨论】:

    【解决方案2】:

    用于定位元素的 Selenium 机制 (org.openqa.selenium.By) 提供了其他定位元素的方法。

    示例:名称、partialLinkText、css 选择器、xpath 选择器、标记名、链接文本。

    tutorial from Selenium Easy 包含一些易于理解的示例。

    【讨论】:

      【解决方案3】:

      如果你想定位&lt;span name="WordPress"&gt;WordPress&lt;/span&gt;元素,你可以使用By.name()定位这个元素,如下:-

      driver.findElement(By.name("WordPress"));
      

      【讨论】:

      • 但我猜名称也会根据表格单元格的内容而改变。
      猜你喜欢
      • 1970-01-01
      • 2014-06-09
      • 2014-01-19
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多