我想在显示元素时将数字保存到文件中,然后测试应该通过。 否则,如果元素不可见,测试也应该通过,但数字不应该保存到文件中。
在显示元素时保存数字工作正常,当元素未显示时测试也不将其保存到文件中,因此这也工作正常。
两个问题:
Selenium 搜索元素时未显示大约... 15 秒?时间太长了,如何减少这个时间呢?使用等待?
最重要的是,如果元素未显示测试失败,我想通过它,因为整个过程已完成,等待该元素并保存数字是额外的事情。
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();}
}
最佳答案
您需要 WebDriverWait
和 ExpectedConditions
来处理等待元素,如下所示:
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/