Как я могу проверить текст, который вставляется в элементы ввода? - PullRequest
1 голос
/ 17 января 2011

У меня есть веб-страница, которая извлекает некоторые данные из моей базы данных, когда кто-то вводит целое число в текстовое поле.Данные попадают в некоторые элементы управления вводом текста.Непосредственная.Селен, запускающий ajax:

<tr>
    <td>fireEvent</td>
    <td>ctl00_ContentPlaceHolder1_Wiz1_Control1_TextBox1</td>
    <td>blur</td>
</tr>

После события размытия на странице есть 6 входов, на которых теперь есть текст.Я хочу дождаться, пока текст будет присутствовать во входных данных, и утверждать, что они присутствуют.Какой эффективный способ сделать это?

Я пробовал:

  • waitForExpression с помощью вызова jquery ($('...').val() != '', но сомнительно, что это работает из-за jquery, хотя jquery загружается на страницу);также пробовал xpath, но он тоже не работал
  • waitForText (локатор, шаблон), который кажется наиболее очевидным, но он действительно не будет работать, я подозреваю, поскольку поля являются входными данными

Нужен ли здесь другой подход, потому что элементы, которые я запрашиваю, являются input элементами управления?

Ответы [ 2 ]

1 голос
/ 19 января 2011

Решение (предоставленное пользователями в группе Google Selenium) заключается в использовании waitForValue вместо waitForText.С одной стороны, это могло бы быть намного легче понять.С другой стороны, я мог бы узнать больше об объекте DOM, который я тестировал.

<tr>
  <td>waitForValue</td>
  <td>ctl00_ContentPlaceHolder1_TheTextBox</td>
  <td>regexp:.+</td>
</tr>

>>> Ссылка на группы Google

0 голосов
/ 19 января 2011

Нечто подобное я бы сделал;Это будет ожидать значения во всех текстовых окнах до 60 секунд. Когда во всех них есть значение, вы проверяете их и т. Д. И выходите из цикла.В противном случае произойдет сбой через 60 секунд.

for (int second = 0;; second++) {
  if (second >= 60) fail("timeout");
  try { 
    if (selenium.getValue("TextBox1") != "" && selenium.getValue("TextBox2") !="" )) 
      { Your Logic here..
         break;
       } 
   } catch (Exception e) {}
  Thread.sleep(1000);
}
...