WebElement比较

时间:2019-02-16 11:49:02

标签: java string selenium

在我的项目中,如果我单击那些不同的数据集并尝试删除它们,我将收到两种类型的警报:两种类型的警报:一种数据被“成功删除”,其他数据显示为“数据无法删除”弹出窗口。如何在Selenium中处理这两个问题?

我使用if-else语句使用getText()方法比较了两个webelement字符串,但显示的是NoSuchElementException

这是我的代码:

WebElement Popup = driver.findElement(By.Xpath="//input[@class='btn-btn-popup']")

WebElement e = driver.findElement(By.xpath="//div[@text='Deleted successfully']");
String Deletepopup = e.getText();

WebElement f = driver.findElement(By.xpath="//div[@text='Data Cannot be deleted']");
String CannotDeltedPopup = f.getText();

if (Deletepopup.equals("Deleted Successfully")) {
    Popup.click();
}
else if (CannotDeletedPopup.equals("Data Cannot be deleted")) {
    Popup.click();
}

1 个答案:

答案 0 :(得分:0)

您当然会得到NoSuchElementException。您尝试找到两个WebElement,但是一次只能显示一个。

如果您的操作成功,您将获得此提示 driver.findElement(By.xpath("//div[@text='Deleted successfully']"))和此driver.findElement(By.xpath("//div[@text='Data Cannot be deleted']"))会抛出NoSuchElementException,反之亦然,否则操作失败。

根据您的情况,我建议您使用try-catch块。

String txt;
try{

    txt = driver.findElement(By.xpath("//div[@text='Deleted successfully']")).getText();

}catch(NoSuchElementException e){

    try{

        txt = driver.findElement(By.xpath("//div[@text='Data Cannot be deleted']")).getText();

    }catch(NoSuchElementException e1){

        txt = "None of messages was found"; //this will happend when none of elements are present.

    }

}

在这种情况下,您将尝试查找“成功删除”消息,如果不存在,将尝试查找“无法删除数据”消息。

我也建议您使用Explicit Wait,以便在抛出NoSuchElementException之前给您的应用一些时间来寻找您的元素。

String txt;
try{

    WebDriverWait wait=new WebDriverWait(driver, 10);

    txt = wait.until(ExpectedConditions.visibilityOfElementLocated(
                        By.xpath("//div[@text='Deleted successfully']"))
                    ).getText();

}catch(NoSuchElementException e){

    try{

        WebDriverWait wait=new WebDriverWait(driver, 10);

        txt = wait.until(ExpectedConditions.visibilityOfElementLocated(
                            By.xpath("//div[@text='Data Cannot be deleted']"))
                        ).getText();

    }catch(NoSuchElementException e1){

        txt = "None of messages was found"; //this will happend when none of elements are present.


    }

}

在抛出NoSuchElementException之前,这将有10秒钟的时间来查找元素。您可以将此时间更改为增加应用程序成功所需的时间。