2014-11-14 3 views
1

Я создал объект для элемента в своем приложении. Этот элемент представляет собой текст для записей, отображаемых на экране. Итак, на первой странице, он будет говорить что-то вроде «отображение 1-10 из 2100»Webdriver - ждать изменения текста элемента

public static final String VTeam_M_Detail_VRecordsText = "css=#UserList:last-of-type > div:last-child"; 

Когда я меняю страницы, текст этого элемента изменяется. Поэтому, если я перейду на вторую страницу, он скажет «отображение 11-20 из 2100». Как я могу заставить webdriver ждать, пока текст этого элемента изменится, прежде чем продолжить тестирование. Поэтому, когда я перехожу со страницы 1 на страницу 2, я хочу дождаться, когда этот элемент будет иметь текст, равный «отображению 11-20 из 2100», прежде чем продолжить оставшуюся часть теста.

+0

Итак, что вы пробовали? Это звучит как очень простой цикл while. – SiKing

ответ

2

Каждый раз, прежде чем вы меняете страницу, извлеките текст, т. Е. Количество записей. Затем нажмите кнопку «Далее», чтобы перейти к следующей странице. И затем, подождите, пока это будет невидимым, используя явное ожидание.

Ниже кода может помочь вам:

String retrieved_text = driver.findElement(By.xpath("//xpath of the element related to records")).getText(); //Retrieving text, i.e., the innerHtml representing number of records 

/*Click on the next button to navigate to the next page*/ 
driver.findElement(By.xpath("//next button's xpath")).click(); 

WebDriverWait wait = new WebDriverWait(driver,30); 
wait.until(ExpectedConditions.invisibilityOfElementWithText(By.xpath("//xpath of the element related to records"), retrieved_text)); 

ПРИМЕЧАНИЕ: В последней строке кода использования XPath, который находит элемент, который показывает текст «отображающее 1-10 из 2100», т.е. который отображает информацию на странице и использует полученный текст, чтобы сделать вывод о том, что соответствующий элемент с этим определенным текстом невидим или нет на следующей странице.

Это поможет легко идентифицировать невидимость соответствующего элемента.

НАОБОРОТ: В случае, если вы хотите, чтобы перейти к следующей странице, пока вы обнаружить определенный элемент

(PUT все в DO-WHILE LOOP)

  • Подождите, пока элемент появится на странице.
  • Если найдено, напишите код, чтобы действовать на элемент и выйти из цикла.
  • Else, нажмите кнопку Next
  • УСЛОВИЯ будет до тех пор, пока кнопка NEXT не будет отключена.
+1

не работал для меня, я добавил два ожидания, чтобы он работал, невидимость, затем видимость –

+0

@YahyaHHussein: Я отредактировал свой ответ выше, чтобы сделать его более понятным. Кроме того, дал другой случай, который может помочь вам. Пожалуйста, дайте мне знать, если это сработает для вас. – Subh

+0

@Subh этот пример не может быть полезным, элемент coz не был удален из DOM, здесь должно быть что-то вроде 'textToBePresentInElement' –

Смежные вопросы