Тайм-аут на поиск элемента в Selenium с Java - PullRequest
0 голосов
/ 17 мая 2018

Когда вы делаете что-то вроде

WebElement tab = driver.findElement(By.xpath("//table")) 

вы можете выполнить команду типа

 driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

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

 public String getCellText(WebElement tab) {
 {
     WebElement td = tab.findElement(By.xpath(".//td"));
     return td.getText();
 }

Вы не можете сделать

 tab.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

Есть ли способ изменить время ожидания? Это особенно интересно, когда у вас есть элемент, который является таблицей, и вы хотите найти строки внизу, если возможно, что строк нет. Если вы создали tab.findElements (By.xpath ("tr")) и в нем нет строк, возврат может занять до минуты.

Есть ли способ установить время ожидания для элемента, как указано выше?

1 Ответ

0 голосов
/ 17 мая 2018
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);  

Это неявное ожидание.
Неявное ожидание устанавливается на срок службы экземпляра объекта WebDriver .

Поскольку tab является веб-элементом, вы не можете сделать:

tab.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

Вы можете выбрать Явное ожидание для изменения времени ожидания для определенных условий.

Код будет выглядеть примерно так:

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(locator));  

Возвращает веб-элемент. Вы можете иметь это так же:

WebElement element =   new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(locator));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...