if(driver.findElement(By.xpath("//div/h3[contains(text(),'MOVENPICK HOTEL DEIRA')]")).isDisplayed())
{
}
else if(driver.findElement(By.xpath("//div/h3[contains(text(),'HOTEL INN')]")).isDisplayed())
{
}
在上面的代码中,如果条件失败意味着如何执行else if(xpathcondition), 对于失败的条件,它将异常显示为“未找到元素”。如果我处理异常,如果执行其他如何? 谢谢你的帮助!!
答案 0 :(得分:1)
理想情况下isDisplayed()
应该返回false而不是抛出异常。
你可以用saifur回答。另一种方法是(根据this)
try {
if(driver.findElement(By.xpath("//div/h3[contains(text(),'MOVENPICK HOTEL DEIRA')]")).isDisplayed())
{ }
}catch(){ //catch executes the else part when the exception is thrown.
if(driver.findElement(By.xpath("//div/h3[contains(text(),'HOTEL INN')]")).isDisplayed())
{ }
}
同时检查此issue
答案 1 :(得分:0)
这里的问题是,如果任何元素查找失败,测试将终止 NoSuchElement 或 Element not Found 异常,因为元素不是dom的一部分。为避免这种情况,您可以稍微欺骗代码或进行另一次检查以查看元素是否首先存在。
我宁愿找到元素并匹配文本而执行其他任务
// Write a selector that would meet the find both elements
WebElement element = driver.findElement(By.cssSelector("div h3"));
if (element.getText().contains("MOVENPICK HOTEL DEIRA")) {
//do this
} else if (element.getText().contains("HOTEL INN")) {
//do something
} else {
//do nothing and log some error
}