xpath 的双斜杠。硒 Java 网络驱动程序
double slash for xpath. Selenium Java Webdriver
我正在使用 Selenium WebDriver。我对 xpath 有疑问。
如果我有下面的代码示例:
<div>
<div>
<div>
<a>
<div>
</div>
</a>
</div>
</div>
</div>
我想找到最后 <div>
中的元素。我想我有 2 个 xpath 选项。
第一个选项是单斜线:
driver.findElement(By.xpath("/div/div/div/a/div")).click();
第二个选项是使用双斜杠(这是我有疑问的地方)。
driver.findElement(By.xpath("//a/div")).click();
它会直接在 <a>
中搜索吗,但是如果 html 示例代码只是更大代码的一部分,并且在这个更大的代码中更多的是 "<a>
”?这个方法具体在哪里?
例如,如果我这样做会发生什么:
driver.findElement(By.xpath("//div")).click();
是否会在 html 代码中找到每个 <div>
?
首先,避免 //
通常是正确的做法 - 所以,您展示的第一个表达是完美的。
Would it looks if every <div>
found in the html code?
是的,没错。像
这样的 XPath 表达式
//div
将select所有div
个元素放在文档中,不管它们在什么地方。
what happens if the html example code was just a part of a bigger code and in this bigger code are more <a>
?. Where would this method look exactly?
然后,让我们制作 HTML "bigger":
<div>
<a>
<p>C</p>
</a>
<div>
<div>
<a>
<div>A</div>
</a>
</div>
<a>
<div>B</div>
</a>
</div>
</div>
如您所见,我又添加了两个 a
元素 - 只有其中一个包含 div
元素。假设这个新文档作为输入,现在会有
之间的差异
/div/div/div/a/div
这将 select 只有 <div>A</div>
作为结果,并且
//a/div
select <div>A</div>
和 <div>B</div>
- 因为 a
在树中的确切位置现在无关紧要。但是 none 将 select 第一个包含 p
.
的 a
元素
我正在使用 Selenium WebDriver。我对 xpath 有疑问。
如果我有下面的代码示例:
<div>
<div>
<div>
<a>
<div>
</div>
</a>
</div>
</div>
</div>
我想找到最后 <div>
中的元素。我想我有 2 个 xpath 选项。
第一个选项是单斜线:
driver.findElement(By.xpath("/div/div/div/a/div")).click();
第二个选项是使用双斜杠(这是我有疑问的地方)。
driver.findElement(By.xpath("//a/div")).click();
它会直接在 <a>
中搜索吗,但是如果 html 示例代码只是更大代码的一部分,并且在这个更大的代码中更多的是 "<a>
”?这个方法具体在哪里?
例如,如果我这样做会发生什么:
driver.findElement(By.xpath("//div")).click();
是否会在 html 代码中找到每个 <div>
?
首先,避免 //
通常是正确的做法 - 所以,您展示的第一个表达是完美的。
Would it looks if every
<div>
found in the html code?
是的,没错。像
这样的 XPath 表达式//div
将select所有div
个元素放在文档中,不管它们在什么地方。
what happens if the html example code was just a part of a bigger code and in this bigger code are more
<a>
?. Where would this method look exactly?
然后,让我们制作 HTML "bigger":
<div>
<a>
<p>C</p>
</a>
<div>
<div>
<a>
<div>A</div>
</a>
</div>
<a>
<div>B</div>
</a>
</div>
</div>
如您所见,我又添加了两个 a
元素 - 只有其中一个包含 div
元素。假设这个新文档作为输入,现在会有
/div/div/div/a/div
这将 select 只有 <div>A</div>
作为结果,并且
//a/div
select <div>A</div>
和 <div>B</div>
- 因为 a
在树中的确切位置现在无关紧要。但是 none 将 select 第一个包含 p
.
a
元素