Я хочу вернуть истину или ложь на основе присутствия элемента, используя свободное ожидание, как это сделать? - PullRequest
0 голосов
/ 18 января 2019

Я использую Fluent wait и вижу, что возвращаемое значение функции - WebElement. Тем не менее, я хочу повторить true или false в зависимости от присутствия элемента. Как мне это сделать? Я передаю эту страницу - https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html

Фрагмент кода здесь -

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring(NoSuchElementException.class);

   WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
     public WebElement apply(WebDriver driver) {
       return driver.findElement(By.id("foo"));
     }
   });

Я пытался перейти на ниже, но это дает мне ошибку -

Метод до (Функция) в типе Ожидание не применимо для аргументов (новый Функция () {})

Вот что я изменил -

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).withTimeout(retryCount, TimeUnit.SECONDS)
                .pollingEvery(1, TimeUnit.SECONDS).ignoring(NoSuchElementException.class);

        Boolean foo = wait.until(new Function<WebElement, Boolean>() {
            public Boolean apply(WebElement by) {
                return true;
            }
        });

Я использую Guava версии 23.0, Selenium 3.0, Java 1.8. *

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Если важна только видимость элемента, попробуйте следующее: -

FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);
    wait.withTimeout(Duration.ofSeconds(20));
    wait.pollingEvery(Duration.ofSeconds(5));
    wait.ignoring(NoSuchElementException.class);

     boolean status = wait.until(new Function<WebDriver, Boolean>() {
        public Boolean apply(WebDriver driver) {
            return driver.findElement(By.name("q")).isDisplayed();
        }
    });
0 голосов
/ 18 января 2019

findelements () - это один из простых способов проверить наличие элемента

if(driver.findelements(By.id("foo")).size()>0) {
  //true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...