[英]Why I must search explicitly relative elements in Selenium by xpath?
我正在尝试使用Selenium的WebDriver通过xpath查找元素:
WebElement element1 = driver.findElement(By.id("someID"));
List<WebElement> xPathElements = element1.findElements((By.xpath("//span[@class='someClass']")));
通过此代码,我将在DOM中获得所有带有class ='someClass'的元素。
仅当我添加“。”时。 在xpath字符串的开头,我得到了element1
下所有class ='someClass'的element1
element1.findElements((By.xpath(".//span[@class='someClass']")));
这是什么意思? 我从element1
调用了findElements
,因此默认情况下它应搜索位于element1
下的element1
,为什么我必须添加“。”?
它与Selenium无关,这是xpath的工作方式。
如果您有// // elem xpath之类的内容,它将位于文档中的任何位置。 但是,如果要搜索相对于另一个元素或更确切地说是后代的元素,则必须使用“。”。 或.//elem之类的点。
.
-选择当前节点
//
-从当前节点中选择匹配选择的节点,无论它们在何处。 由于未指定当前节点,因此将在各处搜索。
所以.//
意味着在当前节点内的任何地方搜索。
在您的情况下:
//span[@class='someClass'] is //span[@class='someClass']
.//span[@class='someClass'] is element1//span[@class='someClass']
请参阅-xpath语法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.