这是我试图实现的逻辑。我按页面中的选项卡,如果有错误消息,我会System.out.println向控制台发送自定义错误消息。如果未出现错误消息,我将继续使用其他功能。
问题是在我单击选项卡后,有一个微调器在加载数据之前加载。微调器和错误消息的 Xpath 是相同的。因此,当 Web 驱动程序看到微调器时,它会将其识别为错误并给我一条错误消息。
当我在两者之间添加 Thread.Sleep 时,它会识别加载的部分并且不会给我错误消息。
除了使用 Thread.sleep 之外,我还可以做任何事情来等待微调器后正确加载数据?
private Boolean BenInErr() throws InterruptedException
{
try {
Thread.sleep(4000);
WebDriverWait BErr = new WebDriverWait (driver, 10);
WebElement BErrText = driver.findElement(By.xpath("//div[@id='plan-details-benefits-and-cost-content']/div/services-list/div/mc-loading-error/div/div/span"));
//String Text = BErrText.getText();
BErr.until(ExpectedConditions.visibilityOf(BErrText));
return BErrText.isDisplayed();
}
catch (Exception Ex1)
{
System.out.println("Benefit information is available");
return false;
}
}
public void mngBenInfErr() throws InterruptedException
{
if (BenInErr())
{
System.out.println("There is an error in Benefits & Coverage tab in Benefit information section");
}
}
我建议为此编写一个等待方法,稍后您可以重用它,例如:
public static void waitForLoaderToDisappear() {
_wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id(YOURLOADERID)));
}