2015-05-12 2 views
2

Я выполнил действие на WebDriver (скажем, я нажал кнопку), в результате текст будет отображаться на странице.WebDriver - Как заставить webdriver ждать, пока текст не будет отображаться (без использования локатора)

Мы не знаем элемент локатора для текста, но мы знаем, какой текст будет отображаться.

Пожалуйста, предложите способ дождаться появления текста.

Я столкнулся с WebDriverWait, но для этого требуется WebElement.

ответ

5

Ищите поиск по тексту на основе xpath. Он позволяет найти элемент на основе текста

// with * we are doing tag indepenedent search. If you know the tag, say it's a `div`, then //div[contains(text(),'Text To find')] can be done 
By byXpath = By.xpath("//*[contains(text(),'Text To find')]"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(byXpath)); 
+0

Привет Saifur, Из вашего примера, как обнаружить, если текст не отображается через 10 секунд –

+0

Он будет бросать NoSuchElement исключение, если не найдено за 10 секунд. Это ты имел в виду? – Saifur

+0

Да, спасибо. –

0

WebDriverWait может использоваться, даже если вы не знаете точный элемент. Если ожидаемый текст имеет только 1 появление на странице, вы можете достичь его через Xpath, как это:

WebDriverWait wait = new WebDriverWait(driver, numberOfSeconds);  
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[contains(text(), 'my text')]")));