java - 如果元素可见执行操作并通过测试,否则仅通过测试

标签 java selenium selenium-webdriver automated-tests

我想在显示元素时将数字保存到文件中,然后测试应该通过。 否则,如果元素不可见,测试也应该通过,但数字不应该保存到文件中。

在显示元素时保存数字工作正常,当元素未显示时测试也不将其保存到文件中,因此这也工作正常。

两个问题:

  1. Selenium 搜索元素时未显示大约... 15 秒?时间太长了,如何减少这个时间呢?使用等待?

  2. 最重要的是,如果元素未显示测试失败,我想通过它,因为整个过程已完成,等待该元素并保存数字是额外的事情。

public void saveNumberIntoFile(String fileNumber) throws IOException {

   if(messageInfo.isDisplayed())

{BufferedWriter writer = new BufferedWriter(
new FileWriter("C:\\Users\\xxx\\Documents\\samplefile.txt", true) //Set true for append mode
);
writer.newLine(); //Add new line
writer.write(fileNumber);

writer.close();}


}

最佳答案

您需要 WebDriverWaitExpectedConditions 来处理等待元素,如下所示:

new WebDriverWait(driver, 15).until(ExpectedConditions.visibilityOfElementLocated(By.name("")));

By.name("") 替换为您在 messageInfo 上缩写的定位器。

15 以秒为单位,如果找到该元素,它不会等到 15 秒。

但是如果在一定的时间段内我们确定没有找到该元素,则会返回错误:

NoSuchElementException: Cannot locate an element using....

并且您的测试将停止,因此您需要使用 try/catch 进行处理。

public void saveNumberIntoFile(String fileNumber) throws IOException {
    try {
        new WebDriverWait(driver, 15).until(ExpectedConditions.visibilityOfElementLocated(By.name("")));
        BufferedWriter writer = new BufferedWriter(
        new FileWriter("C:\\Users\\xxx\\Documents\\samplefile.txt", true) //Set true for append mode
        );
        writer.newLine(); //Add new line
        writer.write(fileNumber);

        writer.close();
    } catch (NoSuchElementException e) {
        // TODO: handle exception
    }
}

关于java - 如果元素可见执行操作并通过测试,否则仅通过测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57865711/

相关文章:

java - 如何用新的散点更新绘图区域?

java - java调用栈的最大深度是多少?

python - 在 headless 火狐(Ubuntu)上使用 selenium 使用 python 下载文件

python - 将 Selenium 数据结果传递给 Pandas

java - 如何处理没有任何元素的浏览器通知弹出窗口?

java - Hibernate - 从多个表到一个对象的复杂查询

python - 如何在 selenium headless 浏览器中退出模态对话框窗口?

Python在网页弹出窗口中从电脑中选择图像

java - 元素在点 (693, 14) 处不可单击。其他元素将收到点击 : With Chrome Driver only

java - 在 Java 中打印当前月份过去 6 个月的名称