多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 9AC WebDriver – 无法轻松定位元素? 继续阅读... > 原文: [https://javabeginnerstutorial.com/selenium/9ac-webdriver-unable-to-locate-an-element-easily-read-on/](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']"));` 而且,就是这么简单! 继续尝试一下,随时在评论部分中发表您的问题。 在另一篇文章中再见。