Метод ловли занимает много времени для выполнения - PullRequest
0 голосов
/ 12 октября 2019

В автоматизации селена я проверяю статус отображения элемента, используя приведенный ниже код

public boolean isDisplayed(String xpath){
try{
return driver.findElement(By.xpath(xpath)).isDisplayed();
}catch (Exception e){
return false;
}

}

, но проблема в том, что если элемент не отображается, он будет ловитьоператор и требуется больше времени для выполнения оператора catch. Как сделать это быстро это. Не могли бы вы помочь мне здесь. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Попробуйте использовать .findElements, он вернет номер элемента.

public boolean isDisplayed(String xpath){
    if(driver.findElements(By.xpath(xpath)).size()>0) {
        return driver.findElement(By.xpath(xpath)).isDisplayed();
    }else {
        return false;
    }
}

Если size>0, вернется первый элемент дисплея.

0 голосов
/ 14 октября 2019

Сначала попробуйте дождаться доступности элемента, используя явное ожидание, а затем проверьте атрибут isDisplayed: причиной ожидания является неявное ожидание элемента, потому что, когда элемент не взаимодействует, он ожидает элемента или время ожидания достигнуто.

WebDriverWait wait = new WebDriverWait(WebDriver, timeSpan);            wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.xpath(xpath)));
try{
return driver.findElement(By.xpath(xpath)).isDisplayed();
}
catch (Exception e){
return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...