为什么isDisplayed返回使用locator而不是boolean找不到元素? - 量角器

时间:2018-03-23 11:36:27

标签: selenium typescript webdriver protractor

我有一个方法isElementDisplayed,里面有element.isDisplayed来电。

为什么isDisplayed在返回布尔值时返回No element found

isElementDisplayed(element: ElementFinder) {
    return element.isDisplayed();
}

3 个答案:

答案 0 :(得分:1)

isDisplayed()会检查元素是否可见,但您需要检查DOM中是否存在元素,使用isElementPresent()isPresent()

df['short_str'] = df['long_str'].str.slice(0,3)

另见:

答案 1 :(得分:0)

异常是由find元素抛出的。使用try& catch块返回false。

try{
return element.isDisplayed();
} 
catch (Exception e) 
{
return false; 
// e.getMessage(); // you can console the exception message if required
}

答案 2 :(得分:0)

您应该尝试使用全局方法并在需要的地方调用它。像这样:

public static boolean ElementVisible(By element, WebDriver driver) {

        // Maximum wait time is 60 seconds
        int maxAttempts = 2;
        long sleepTimeInMillisForEachIteration = 500;

        for (int counter = 0; counter <= maxAttempts; counter++) {
            try {

                    driver.findElement(element);        

                return true;
            } catch (NoSuchElementException | ElementNotVisibleException e) {
                if (counter == maxAttempts) {
                    return false;
                }
                try {
                    Thread.sleep(sleepTimeInMillisForEachIteration);
                    continue;
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
            }
        }
        return false;
    }

所以这里它将与元素交互,如果它是可见的或显示,否则它将处理异常并返回false。