Java Selenium WebDriver未单击第一个按钮

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

我有一个包含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();
        }
}
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在单击之前必须向下滚动?好主意,我也会尝试一下,并让您知道结果。是的,它与执行器配合得很好。非常感谢。