我如何点击 "Continue" 按钮来完成 Selenium Java 中的调查

How I can click on a "Continue" button to finish a survey in Selenium Java

我尝试自动化调查页面。一切正常,直到我到达最后一个按钮,但我无法点击。

我尝试了什么:

 @FindBy(xpath = "//div[contains(@class,'question-12')]//a[@id='next']")
    WebElement continua10;
    @FindBy(xpath = "//div[contains(@class,'question-14')]//a[@id='next']")
    WebElement continua;
    @FindBy(css = "#prev")
    WebElement back;
 
    @FindBy(css = "#page-title")
    WebElement result_title;

    public void completeSurvey() {

        JavascriptExecutor executor = (JavascriptExecutor) driver;
        executor.executeScript("arguments[0].click();", ages);
        executor.executeScript("arguments[0].click();", sex);
        executor.executeScript("arguments[0].click();", start);
        executor.executeScript("arguments[0].click();", question1);
        executor.executeScript("arguments[0].click();", question2);
        executor.executeScript("arguments[0].click();", question3);
        executor.executeScript("arguments[0].click();", question4);
        executor.executeScript("arguments[0].click();", question5);
        executor.executeScript("arguments[0].click();", question6);
        executor.executeScript("arguments[0].click();", question7);
        executor.executeScript("arguments[0].click();", question8);
        executor.executeScript("arguments[0].click();", question9);
        //executor.executeScript("arguments[0].click();", question10);
//        JavascriptExecutor js = (JavascriptExecutor) driver;
//        js.executeScript("window.scrollBy(0,200)", "");
        executor.executeScript("arguments[0].click();", question10a);
        executor.executeScript("arguments[0].click();", question10b);
        executor.executeScript("arguments[0].click();", question10c);
        executor.executeScript("arguments[0].click();", question10d);
        executor.executeScript("arguments[0].click();", question10e);
        executor.executeScript("arguments[0].click();", question10f);
        executor.executeScript("arguments[0].click();", question11);
        continua.click();
         disclaimer.click();
    WebDriverWait wait = new WebDriverWait(driver, 30);
    wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath = "//div[contains(@class,'question-14')]//a[@id='next']")));
    continua.click();

代码遍历此调查问卷的每个步骤。我需要单击最后一个“继续”按钮。

对于那个特定的下一个按钮,您可能需要定义一个单独的 xpath:

(xpath = "//div[contains(@class,'actions')]//a[@class='btn']")

试试这个,如果有效请告诉我。

我看到您的定位器是正确的,但是您应该等待继续按钮的可见性而不是存在,因为它甚至在您选择免责声明按钮之前就已经存在。但是,在选择免责声明之前,继续按钮存在但被禁用。所以我想当您尝试在它仍处于禁用状态时单击它时,将继续按钮更改为启用需要一些时间。
所以,请从

wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath = "//div[contains(@class,'question-14')]//a[@id='next']")));

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath = "//div[contains(@class,'question-14')]//a[@id='next']")));