【发布时间】:2014-01-15 13:46:38
【问题描述】:
<div class="class0">
<div class="class1">
<input tabindex="4" id="pqr" autocomplete="off" type="text">
</div>
<ul class="class2">
<li class="group-result">polka</li>
<li class="active-result group-option" style="" data-array- index="1">abcd</li>
<li class="active-result group-option" style="" data-array-index="2">efgh</li>
<li class="group-result">ijkl</li>
<li class="active-result group" style="" data-array-index="3">abcd</li>
<li class="active-result group" style="" data-array-index="4"></li>
<li class="active-result" style="" data-array-index="5">xyz</li>
</ul>
如果我不能在这里重现整个代码,请原谅我。在上面的一段 html 中,提示用户在输入框中输入并生成自动建议。您在上面看到的是在框中输入后得到的内容。
我需要点击一个 li 元素,比如 xyz。一种方法是获取 ul 元素,然后获取其所有子元素。然后遍历它们并通过检查它们的内部文本来选择正确的。所以,我尝试了
WebElement a1 = driver.findElement(By.className("class0"));
WebElement a2 = a1.findElement(By.className("class2"));
List <WebElement> a3 = a2.findElements(By.xpath(".//*));
System.out.println(a3.size());
正如这个问题的回复所建议的那样:How to get all descendants of an element using webdriver?
但是 print 语句打印的是 0,即没有找到孩子
有人可以提出原因吗?
也非常欢迎任何其他方法建议。
谢谢
【问题讨论】:
-
您的 java 是否包含在文本框中输入字符的代码?
-
是的,Amith .....我在上面只提到了我的一段代码。但是我的代码输入到输入框中,我可以看到它......另外,列表元素不会出现
-
List <WebElement> a3 = a2.findElements(By.xpath(".//*));..此语句中缺少双引号,猜测是错字...您尝试过使用其他 xpath 或 cssSelectors 吗? -
这是一个错字,是的....我的错。我用 data-array-index 尝试了 cssSelector,但没有用。此外,也不接受复合类名
-
你可以试试这个
findElements(By.cssSelector(".class2 > li[class*='result']"))