【问题标题】:Selenium not picking up found elements on xpathSelenium 没有拾取在 xpath 上找到的元素
【发布时间】:2017-12-11 18:14:53
【问题描述】:

找到带有 xpath 或 CSS 的元素列表(在浏览器控制台中的结果相同)

int alltips = driver.findElements(By.xpath("//div[@class='column medium-12']//div/ul/li")).size();
int alltips1 = driver.findElements(By.cssSelector("ul.feed-tips#Grid > li.feed-item")).size();
    System.out.println(alltips);
    System.out.println(alltips1);

由于两次打印得到了相同的结果(一个页面上存在 21 个 'li' 容器) 但是,当把它放在 selenium webdriver 中时,我得到了相同的结果并且它为零。 从控制台添加屏幕截图

我做错了什么?

这是 HTML 的一部分:

<div class="column medium-12">
<h1>Free Tips</h1>
 <p>Here you'll always find the latest tips posted by our international    community of sports betting tipsters. If you're ever in need of inspiration for a bet, this is the place to be! </p>
 <div class="row">
 <ul class="feed-tips" id="Grid" data-sport="" data-country="" data-
  league="">

下面的 HTML 看起来和截图一样:

【问题讨论】:

  • 请分享HTML
  • @DebanjanB 不幸的是,它没有直播,所以我会把你送到这里

标签: java selenium xpath


【解决方案1】:

findElements在没有找到元素的情况下不会抛出错误,所以有可能在调用这个方法的时候没有找到元素。

您可以等待ul 元素可见,然后再使用WebDriverWait 像这样调用findElements

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(#Grid)));

这将等待 最多 10 秒,然后引发超时。之后,调用您的 findElements 方法。此时你知道父ul是可见的

int alltips = driver.findElements(By.xpath("//ul[@id='Grid']/li")).size();

【讨论】:

  • 它不会抛出任何错误 - 在浏览器中它找到了所有 li 元素,并且当作为测试套件的一部分运行该测试时,它显示零元素。没有任何错误另外,它在页面打开后等待4秒
  • 我就是这么说的。它不会引发错误。由于它不会引发错误,因此您不确定您的元素是否确实可供 webdriver 查找。这就是为什么您应该等待ul 标记可见,然后再尝试查找li 子项。
  • 没问题,很高兴为您提供帮助!
猜你喜欢
  • 2022-06-25
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
相关资源
最近更新 更多