Насколько я понимаю, мы работаем с Winium драйвером опосредованно через Selenium. К сожаленью ли, к счастью ли, я тоже использовал слипы (наверное, сказывается опыт работы с дельфовым Zombie). Вот тут есть ImplicitlyWait — подозреваю, это именно то, что Вам нужно. Я же ожидаю подобным образом:
int timeoutIC = 5; //max number of iterations
Boolean flg = true; //success flag
int h = 0;
WebElement win = null;
while ((flg)&&(h < timeoutIC))
{
win = attachN(_webDriver,winName);//_webDriver - current attached driver, winName - Name of the target window
if (win == null)
{
log("Window was not found, waiting further");
//optional - Thread.sleep(...) here, but not necessary
h++;
}
else
{
log("Window found");
flg = false;
}
}
if (flg){
throw new Exception("The window was not appeared in time");
}
/* the rest of your code*/
public static WebElement attachN(WebDriver _driver, String _name){
log("Attaching to element ...");
try{
WebElement res = _driver.findElement(By.name(_name)); //will wait for window to appear for predefined time, will throw exception if window was not found
return res;
}
catch(Exception ex){
log("... window was not found");
return null;
}
}
Если драйвер долго не находит какой-либо элемент (таймаут несколько секунд, точное значение не знаю), он выкидывает эксепшн. Так что можно отлавливать его в циклах. While (true) это не очень хороший вариант, а вот свой int «таймаут» по количеству попыток найти окно хорошо подходит.
В начале знакомства почему-то попадались материалы исключительно на Python и изредка Java. А вообще всё, судя по всему, ограничивается возможностью работы с Selenium.
Пара ссылок на эту тему:
http://docs.seleniumhq.org/about/platforms.jsp#programming-languages
https://habrahabr.ru/company/2gis/blog/263347/
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Пара ссылок на эту тему:
http://docs.seleniumhq.org/about/platforms.jsp#programming-languages
https://habrahabr.ru/company/2gis/blog/263347/