我尝试使用Selenium的WebDriver通过xpath查找元素:
WebElement element1 = driver.findElement(By.id("someID"));
List<WebElement> xPathElements = element1.findElements((By.xpath("//span[@class='someClass']")));
使用此代码,我可以使用class =&#39; someClass&#39;来获取所有元素。在DOM中。
只有当我添加&#34;。&#34;在xpath字符串的开头,我得到了所有带有class =&#39; someClass&#39;属于element1
element1.findElements((By.xpath(".//span[@class='someClass']")));
这里的意义是什么?我从findElements
拨打了element1
,因此默认情况下应该搜索element1
下的元素,为什么我必须添加&#34;。&#34;?
答案 0 :(得分:1)
它与Selenium无关,它是xpath的工作方式。
如果您有类似// elem xpath将位于文档中的任何位置。但是如果你想搜索一个相对于另一个元素或者后代的元素,那么你必须使用&#39;。&#39;或点像.//elem。
答案 1 :(得分:1)
.
- 选择当前节点
//
- 从当前节点中选择与选择匹配的文档中的节点,无论它们在何处。由于未指定当前节点,将在任何地方搜索。
所以.//
意味着搜索当前节点内的所有地方。
在你的情况下:
//span[@class='someClass'] is //span[@class='someClass']
.//span[@class='someClass'] is element1//span[@class='someClass']
请参阅 - xpath syntax