9AC WebDriver – 无法轻松定位元素? 继续阅读…
原文: https://javabeginnerstutorial.com/selenium/9ac-webdriver-unable-to-locate-an-element-easily-read-on/
好吧,如果您的内存比我的好,那么您将记住,Selenium WebDriver 中有 8 种定位器类型,即 ID,名称,标签名称,类名称,链接文本,部分链接文本,CSS 选择器和 XPath。 令人遗憾的是,即使我们有很多定位器类型,定位元素仍然充满挑战,尤其是在被测试的应用很复杂的情况下。
例如,
- 为每个会话生成唯一的 ID(带有随机字母数字字符)
- 各种元素的重复类名
- 多个
div
标签使 XPath 的长度比平时更长
所有这些使自动化测试人员的工作更具挑战性! 绝对 XPath 可能会有所帮助,但是如果 DOM 中包含新元素或现有元素稍微移动了一点,那么脚本可能会失败,因为找不到该元素。 相对的 XPath 可能可以解决,但是即使那样,由于脚本变得复杂,整个过程也变得很困难。
处理此类情况的最简单便捷的方法是在 HTML 元素上引入data-*
属性(自定义数据属性)。 这里唯一的问题是,您将需要成为开发人员的好书! 他/她是根据您的要求将这些属性添加到代码中的人。😉
现在让我对这些自定义数据属性进行学习,
custom
属性允许我们在 HTML 元素上存储额外的数据或信息。 要遵循的规则是,
- 属性名称应以
data-
开头 - 在
data-
的此前缀之后,属性名称应至少一个字符长,并且只能使用小写字母 - 为此属性提供的值可以是任何字符串。
语法:<element data-*="value">
那很特别,你不觉得吗?
这里有一个示例,可以更好地可视化该概念,
<li data-test="poultry">Chickens</li>
有了这些数据属性,定位元素就轻松了!
WebElement poultry = driver.findElement(By.
xpath
("//li[@data-test='poultry']"));
而且,就是这么简单! 继续尝试一下,随时在评论部分中发表您的问题。
在另一篇文章中再见。