Java Selenium WebDriver未单击第一个按钮
我有一个包含5个“购买”按钮的列表。Selenium WebDriver没有单击第一个“购买”按钮,而是单击了剩余的4个按钮。运行了println,显示WebDriver找到了所有5个购买按钮 我尝试过切换列表中按钮的顺序,我尝试过调试它,我也包括了显式等待,但没有任何帮助。有人有线索吗 我的代码如下:Java Selenium WebDriver未单击第一个按钮,java,selenium,webdriver,browser-automation,Java,Selenium,Webdriver,Browser Automation,我有一个包含5个“购买”按钮的列表。Selenium WebDriver没有单击第一个“购买”按钮,而是单击了剩余的4个按钮。运行了println,显示WebDriver找到了所有5个购买按钮 我尝试过切换列表中按钮的顺序,我尝试过调试它,我也包括了显式等待,但没有任何帮助。有人有线索吗 我的代码如下: for (int i = 0; i < allProductsOnsite.size(); i ++) { //System.out.println(allProducts
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();
}
}
for(int i=0;i
尝试使用JavascriptExecutor单击
WebElement element= driver.findElement(By.xpath(".//*[@id='loginButton']/div"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
如果需要,也可以在执行此代码之前使用一些等待
希望这将对您有所帮助:)您正在检查
allProductsOnsite
中的WebElements,但您没有在allBuyButtons
中检查WebElements。所以你的println并没有显示所有5个按钮都找到了,而是显示5个产品都找到了。可能是第一个产品加载了,但在Selenium查找所有按钮之前,它的按钮没有加载。尝试检查所有BuyButtons
中的每个元素,并向我们提供您发现的最新信息。感谢您帮助我TJamesBoone,我按照您的建议在所有BuyButtons上进行了打印,它为我提供了页面上预期的正确按钮数,这让我认为,既然所有预期的按钮都是可见的,webdriver应该能够单击它们,但它仍然没有单击第一个按钮。提供更多信息,如:如何查找所有按钮、html片段(或网页链接)作为一个实验(这不是您在严肃的代码中想要做的事情)、在for循环之前放置一个Thread.sleep(3000)并运行代码。如果它起作用,那么我们就知道,allelements()的可见性(
不是第一个按钮可单击的充分条件。如果它仍然不起作用,那么我们将知道问题与等待时间不够有关。您的第一个按钮是否显示在第二个屏幕上,以便webdriver在单击之前必须向下滚动?好主意,我也会尝试一下,并让您知道结果。是的,它与执行器配合得很好。非常感谢。