Selenium不使用XPath如何通过class与文本定位Validate按钮
错误原因排查
你之前的猜测是错误的,定位失败的真实原因有两个:
- 第二种写法错误将目标元素标签写为
div,但Validate按钮实际是<a>标签,完全匹配不到符合条件的元素 - 第一种XPath写法的问题是目标
<a>标签的文本前后自带空格,你用text()='Validate'做精确匹配自然无法命中带前后空格的文本
非XPath的正确定位方案
下面给你3种不用XPath的可行定位方式:
方案1:使用linkText定位
直接匹配链接完整文本(注意要包含前后空格):
Driver.findElement(By.linkText(" Validate ")).click();
方案2:使用partialLinkText定位(更推荐)
不需要考虑文本前后的空格,只要包含"Validate"关键词就能匹配:
Driver.findElement(By.partialLinkText("Validate")).click();
方案3:使用CSS选择器定位
可以通过href属性特征匹配:
Driver.findElement(By.cssSelector("a[href*='validatedocumentation.php']")).click();
也可以结合父元素属性按顺序匹配:
// 匹配class为order的div下的第二个a标签 Driver.findElement(By.cssSelector("div.order a:nth-of-type(2)")).click();
内容的提问来源于stack exchange,提问作者Vladislav
相关产品推荐
相关产品推荐

