【问题标题】:How I can click on a "Continue" button to finish a survey in Selenium Java如何单击“继续”按钮以在 Selenium Java 中完成调查
【发布时间】:2021-06-28 05:35:33
【问题描述】:

我尝试自动化调查页面。一切都很好,直到我到达最后一个按钮并且我无法点击。

我尝试了什么:

 @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();

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

【问题讨论】:

    标签: java selenium testing automation


    【解决方案1】:

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

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

    试试这个,让我知道它是否有效。

    【讨论】:

      【解决方案2】:

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

      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']")));
      

      【讨论】:

        猜你喜欢
        • 2014-01-04
        • 2019-09-16
        • 1970-01-01
        • 1970-01-01
        • 2021-04-09
        • 2018-09-01
        • 2021-04-08
        • 2021-01-08
        • 1970-01-01
        相关资源
        最近更新 更多