9AC WebDriver – 无法轻松定位元素? 继续阅读…

原文: https://javabeginnerstutorial.com/selenium/9ac-webdriver-unable-to-locate-an-element-easily-read-on/

好吧,如果您的内存比我的好,那么您将记住,Selenium WebDriver 中有 8 种定位器类型,即 ID,名称,标签名称,类名称,链接文本,部分链接文本,CSS 选择器和 XPath。 令人遗憾的是,即使我们有很多定位器类型,定位元素仍然充满挑战,尤其是在被测试的应用很复杂的情况下。

例如,

  1. 为每个会话生成唯一的 ID(带有随机字母数字字符)
  2. 各种元素的重复类名
  3. 多个div标签使 XPath 的长度比平时更长

所有这些使自动化测试人员的工作更具挑战性! 绝对 XPath 可能会有所帮助,但是如果 DOM 中包含新元素或现有元素稍微移动了一点,那么脚本可能会失败,因为找不到该元素。 相对的 XPath 可能可以解决,但是即使那样,由于脚本变得复杂,整个过程也变得很困难。

处理此类情况的最简单便捷的方法是在 HTML 元素上引入data-*属性(自定义数据属性)。 这里唯一的问题是,您将需要成为开发人员的好书! 他/她是根据您的要求将这些属性添加到代码中的人。😉

现在让我对这些自定义数据属性进行学习,

custom属性允许我们在 HTML 元素上存储额外的数据或信息。 要遵循的规则是,

  1. 属性名称应以data-开头
  2. data-的此前缀之后,属性名称应至少一个字符长,并且只能使用小写字母
  3. 为此属性提供的值可以是任何字符串。

语法<element data-*="value">

那很特别,你不觉得吗?

这里有一个示例,可以更好地可视化该概念,

<li data-test="poultry">Chickens</li>

有了这些数据属性,定位元素就轻松了!

WebElement poultry = driver.findElement(By. xpath ("//li[@data-test='poultry']"));

而且,就是这么简单! 继续尝试一下,随时在评论部分中发表您的问题。

在另一篇文章中再见。