Selenium - подождите несколько минут, прежде чем нажать кнопку - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу подождать несколько минут после загрузки страницы, а затем нажать какую-нибудь кнопку.Пытался сделать что-то вроде этого:

@And("^Wait for \"([^\"]*)\" minutes$")
    public void waitForMintues(long time){
         //Thread.sleep() or webdriver.manage().timeouts().implicitlyWait(time, TimeUnit.SECONDS)
         //click some button
    }

Но это не работает.Тесты по-прежнему выполняются без ожидания определенных минут.Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Вы можете использовать комбинацию WebDriverWait и ExpectedConditions для достижения, затем использовать метод .elementToBeClickable, сначала он будет ждать, а затем нажать.

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("...."))).click();

После импорта:

import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.By;

10 - это время ожидания в секундах, и попробуйте изменить By.xpath("....") с помощью вашего локатора.

Документы

0 голосов
/ 25 сентября 2019

Здесь Thread.Sleep() закомментировано?

Если вы хотите всегда ждать несколько минут, вам нужно использовать явное ожидание - Thread.Sleep(50000)); или Thread.Sleep(TimeSpan.FromSeconds(5));

Неявное ожиданиеобычно используется в контексте ожидания существования элемента.Но так как вы всегда хотите подождать несколько минут, вы должны использовать явное ожидание.

...