问题:XPath 在 IE 和 Firefox 中不同。为什么?

我使用 Firebug 的 Inspect Element 来捕获网页中的 XPath,它给了我类似的东西:

//*[@id="Search_Fields_profile_docno_input"]

我在 IE 中使用 Bookmarklets 技术来捕获同一对象的 XPath,我得到了类似的东西:

//INPUT[@id='Search_Fields_profile_docno_input']

请注意,第一个没有 INPUT 而是有一个星号 (*)。为什么我得到不同的 XPath 表达式?我在测试中使用哪一个是否重要,例如:

Selenium.Click(//*[@id="Search_Fields_profile_docno_input"]);

或者

Selenium.Click(//INPUT[@id='Search_Fields_profile_docno_input']);

解答

*[Idu003d] 表示它可以是任何元素,而第二个明确提到 selenium 仅查找 ID 为 Search_Fields_profile_docno_input 的 INPUT 字段。由于以下原因,第二个 xpath 更好

1.使用*查找元素需要更多时间,因为所有元素的ID都应该匹配。

  1. 如果您的 HTML 代码没有“写得好”,则可能有其他元素具有相同的 id,这可能会导致您的测试失败。
Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐