java - 通过 ID 查找元素,其中 ID 是动态的

标签 java selenium automated-tests

我有这个代码

WebElement element = driver.findElement(By.id("j_idt9:usuario"));

我想知道如何使用 XPath 搜索特定 ID。在本例中,我想搜索“usuario”部分,因为“j_idt9”部分发生了变化。我知道可以使用 CSS 选择器来完成,但我需要使用 XPath。

最佳答案

你应该告诉你的教授,CSS 选择器不仅仅适用于类......如果他/她真的这么说,他们应该感到尴尬并去读一些书。他们可以从这两个引用文献开始:

https://www.w3.org/TR/selectors/#selectors

https://saucelabs.com/resources/articles/selenium-tips-css-selectors

如果你必须使用 XPath,它看起来像

"//*[ends-with(@id, 'usuario')]"

您最好使用 CSS 选择器,因为它速度更快,并且具有更好、更一致的浏览器支持。它看起来像

"[id$='usuario']"

一般来说,您的定位器策略应该如下所示......

  1. 按.id
  2. By.linkText、By.partialLinkText
  3. By.cssSelector
  4. 然后作为最后的手段,By.xpath

仅当其他方法不起作用时才应使用 By.xpath。例如,您需要通过元素包含的文本查找元素,或者您必须执行 CSS 无法执行的一些父/子转换。

关于java - 通过 ID 查找元素,其中 ID 是动态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900488/

相关文章:

java - Jersey : location header URI not created correctly

java - 迭代使用 DocumentFilter

testing - 如何使用 XPATH 访问 TR 内的链接

python - 如果脚本失败则引发异常

node.js - 如何获取 RequestLogger 的 json 响应

java - 返回不可修改的 map

java - 再次调用fragment时是否可以恢复fragment UI中数据的状态?

java - 是否有可能构建一个可以通过浏览器运行的 Web 自动化?

selenium - 具有不同 URL 的 Specflow 场景大纲

testing - 通用(非特定于服务器的)HTTP 服务器测试套件?