我有一个测试脚本,它基本上为不同的用户执行了许多步骤。有些用户会看到一个特定的按钮,而有些则不会。
我创建了一个方法,用于检查按钮是否显示如下:
public boolean check_create_new_item_button_visible(){
Boolean visible = driver.findElement(By.linkText("New Item")).isDisplayed();
return visible;
}
并以下列方式调用:
boolean visible = npc.check_create_new_item_button_visible();
但我总是得到错误:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"link text","selector":"New Item"}
按钮不可见,这是您所期望的。
可能是一个愚蠢的错误,但我如何才能确定该按钮是否在屏幕上以便我的程序可以继续?
我很自然地将代码移动到程序的一部分,其中按钮可见,boolean visible返回true。因此,如果按钮可见,代码就可以工作。
答案 0 :(得分:2)
如果driver.findElement
返回找到的元素,或者如果找不到该元素则抛出NoSuchElementException
。为了避免异常,您可以使用findElements
并检查返回的列表是否包含元素,以及是否检查第一个是否可见
public boolean check_create_new_item_button_visible() {
List<WebElement> buttons = driver.findElements(By.linkText("New Item"));
if (buttons.size() > 0 && buttons.get(0).isDisplayed())
{
return true;
}
return false;
}
答案 1 :(得分:1)
public boolean check_create_new_item_button_visible(){
try {
boolean btnPresence = driver.findElement(By.linkText("New Item")).isDisplayed();
boolean btnEnable = driver.findElement(By.linkText("New Item")).isEnabled();
if (btnPresence ==true && btnEnable ==true)
{
// click on the search button
WebElement btn = driver.findElement(By.linkText("New Item"));
btn .click();
}
catch (org.openqa.selenium.NoSuchElementException e){
return false;
}
}