繁体   English   中英

为什么我必须通过xpath在Selenium中显式搜索相对元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM