【发布时间】:2017-09-05 06:26:27
【问题描述】:
我需要获取一个部门内的所有元素。该部门根据从下拉列表中选择的值动态加载数据。因此,对于每个选定的值,该分区内都有一组不同的元素。 这是 HTML:
<div id="container1">
<div id="container1.1">
<input id="dropdown" type="select">//dropdown for dynamically selecting elements of container1.2
<options>1</options>
<options>2</options>
</div>
<div id="container1.2">
<input type="text" id="element1">
<button id="element2">
</div>
</div>//for container
硒代码:
List<WebElement> obj=driver.findElements(By.xpath("//[@id='Container']//*"));//to get all elements in division
System.out.println(obj.get(0).getTagName());
System.out.println(obj.get(1).getTagName());
这没有给出所需的结果。我收到以下错误:
invalid selector: Unable to locate an element with the xpath expression //[@id='Container']//* because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//[@id='Container']//*' is not a valid XPath expression.
【问题讨论】:
-
错误清楚地表明 xpath 不正确。您需要使用
options。所以 xpathdriver.findElements应该找到下拉列表 -
如果它是唯一的,则使用:
List<WebElement> obj=driver.findElements(By.xpath("//input[@id='dropdown']")); -
你能告诉我在这种情况下如何给出正确的 xpath
-
@KishanPatel 我不知道所有元素每次都会加载什么。我需要类似的东西: driver.findElements(By.xpath("//*"));这给出了页面中的所有元素,对吗?同样,我只想要一个部门中的所有元素
-
你不会知道下拉菜单中有什么吧?但是下拉菜单会一直存在。我对吗?