【发布时间】:2015-12-29 13:00:19
【问题描述】:
我有一个包含 5 个“购买”按钮的列表。 Selenium WebDriver 没有点击第一个“购买”按钮,但点击了剩下的 4 个就好了。运行一个 println,它显示了 WebDriver 找到的所有 5 个购买按钮。
我尝试过切换列表中按钮的顺序,我尝试过调试它,我也包含了显式等待,但没有任何帮助。谁有线索?
我的代码如下:
for (int i = 0; i < allProductsOnsite.size(); i ++) {
//System.out.println(allProductsOnsite.get(i).getText());
if (prodsToBuy.contains(allProductsOnsite.get(i).getText())) {
System.out.println("Found -------" + allProductsOnsite.get(i).getText() );
WebDriverWait wt = new WebDriverWait(driver, 15);
wt.until(ExpectedConditions.visibilityOfAllElements(allProductsOnsite));
allBuyButtons.get(i).click();
}
}
【问题讨论】:
-
您正在检查
allProductsOnsite中的WebElements,但您没有检查allBuyButtons中的WebElements。因此,您的 println 并未显示已找到所有 5 个按钮,而是显示已找到 5 个产品。可能是第一个产品已加载,但在 Selenium 查找所有按钮之前未加载按钮。尝试检查allBuyButtons中的每个元素,并根据您的发现向我们提供更新。 -
感谢您帮助我 TJamesBoone,我遵循了您的建议并在 allBuyButtons 上进行了 println,它为我提供了页面上预期的正确按钮数量,这让我认为,因为所有预期的按钮都是可见,webdriver 应该能够点击它们,但它仍然没有点击第一个按钮。
-
提供更多信息,例如:您如何找到所有按钮、html sn-p(或网页链接)
-
作为一个实验(这不是你想在严肃的代码中做的事情),在你的 for 循环之前放置一个 Thread.sleep(3000) 并运行你的代码. 如果有效,那么我们就会知道
visibilityOfAllElements()不是第一个按钮可点击的充分条件。 如果还是不行,那么我们就会知道问题与没有等待足够长的时间有关。 -
您的第一个按钮是否显示在第二个屏幕上,因此 webdriver 在点击之前必须向下滚动?
标签: java selenium webdriver browser-automation