问题描述
我已经通读了论坛,显然几乎没有人会遇到带有双引号值的 XPath 查找问题,我发现的大多数帖子都谈到查找具有单引号和双引号值的元素的 Xpath,所以我决定问这个问题,如果已经在其他地方回答了这个问题,我深表歉意。
无论如何,我想找到的元素或多或少是这样的:
<a class="product" title="REALIZE "WHY NO.T"" width="454" height="423" alt="" id="">
</a>
我尝试使用 Selenium Webdriver 多次更改 XPath,但没有成功
'//a[@title="REALIZE "WHY NO.T""]'
'//a[@title="REALIZE \"WHY NO.T\""]'
"//a[@title="REALIZE \"WHY NO.T\""]"
这些是我尝试过的一些,还有一些,但我没有保存所有尝试过的
我觉得这可能是我错过了一些非常基本的东西,但我一直在寻找答案几个小时没有成功
解决方法
你说“我想找到的元素或多或少是这样的:”
“多还是少”?这到底是什么意思?是更像这样,还是更像这样?如果我们不知道它到底是什么样子,我们如何帮助您?
然后你说:
<a class="product" title="REALIZE "WHY NO.T"" width="454" height="423" alt="" id="">
</a>
但这不是格式良好的 XML。解析器应该如何确定 title
属性结束的位置? XML 解析器应该在那时将其丢弃。
好的,您可能正在使用 HTML 解析器而不是 XML 解析器,并且 HTML 解析器会尝试理解您扔给它们的任何旧垃圾。但我不知道 HTML 解析器将如何处理此输入。 HTML 解析器很聪明,但它们不够聪明,无法确定这些引号中哪些是属性值的一部分,哪些标记了属性值的开始和结束。它可能变成了与您期望的完全不同的东西,这就是您的 XPath 表达式不起作用的原因。
,我会推荐 右键单击想要的元素 > 单击检查元素 > 在控制台中查看元素 > 复制 xpath > 粘贴它并分析它的输出方式。
然后我会将其与您当前的解决方案进行比较,并可能会调整一两件事。