【问题标题】:java- webdriver click on a list elementjava- webdriver 点击列表元素
【发布时间】: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 &lt;WebElement&gt; a3 = a2.findElements(By.xpath(".//*));..此语句中缺少双引号,猜测是错字...您尝试过使用其他 xpath 或 cssSelectors 吗?
  • 这是一个错字,是的....我的错。我用 data-array-index 尝试了 cssSelector,但没有用。此外,也不接受复合类名
  • 你可以试试这个findElements(By.cssSelector(".class2 &gt; li[class*='result']"))

标签: java html list selenium


【解决方案1】:

您应该等到class0 div 出现在 DOM 中,然后再查询其子项:

WebDriverWait wdw = new WebDriverWait(webDriver, 20);
WebElement a1 = wdw.until(ExpectedConditions.presenceOfElementLocated(By.className("class0")));

WebElement a2 = a1.findElement(By.className("class2"));

List <WebElement> a3 = a2.findElements(By.xpath(".//*));
System.out.println(a3.size());

【讨论】:

  • 我确实使用了 waitVar .....这没有帮助。代码很容易得到 a2 元素,它是它错过的子元素。我得到一个零作为最后一个打印语句的输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2018-03-14
  • 2014-11-13
  • 2012-09-03
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多