有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Selenium webDriver不稳定错误堆栈跟踪

我无法点击模式中的提交按钮。它只是有时起作用——不稳定

下面是我的HTML元素:

<button id="submit-btn" name="submit" data-dismiss="modal" type="submit" class="btn btn-info btn-sm submit projectSaveBtn">Submit</button>

在这里,我使用id来定位元素,但我无法单击模式中的submit按钮

我的Java代码:

WebElement element1 = driver.findElement(By.id("submit-btn"));
Actions actions = new Actions(driver);
actions.moveToElement(element1).build().perform();   
wait.until(ExpectedConditions.elementToBeClickable(element1)).click();

共 (4) 个答案

  1. # 1 楼答案

    不使用id属性,您可以使用xpath属性,如下所示:

    WebElement element1 = driver.findElement(By.xpath("//button[@id='submit-btn']"));
    element1.click();
    

    或者

    WebElement element2 = driver.findElement(By.xpath("//button[@class='btn btn-info btn-sm submit projectSaveBtn' and @id='submit-btn']"));
    element2.click();
    
  2. # 2 楼答案

    如果是windows模式对话框,您可能希望首先switchTo()到模式,然后对其执行accept()

    driver.switchTo().alert().accept();
    driver.switchTo().window("");
    
  3. # 3 楼答案

    当我们使用action类时,selenium使用鼠标和键盘控件。如果我们在测试执行时(特别是actions语句执行时)与鼠标或键盘交互,它可能会失败很多次

    您可以尝试使用actions类,在它完成测试执行之前不进行交互。这可能会解决你的问题

  4. # 4 楼答案

    我解决了这个问题,就是时间问题。在页面正确加载之前打开了Modal,因此在单击/打开Modal之前给出时间可以解决问题

    这是我的代码-->

    WebDriverWait wait = new WebDriverWait(driver, 10);         
    WebElement add = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.btn.projectAddBtn")));  
    

    add.click();

    这解决了我的问题。谢谢大家的支持:-)