Пролистать страницы и найти нужное слово

А давайте распишем возможность выбора какого-то значения из таблицы, в которой находится несколько страниц, и нужно пролистать страницы в поисках нужного слова (или элемента).

Предположим, что у нас таблица с логинами, и поиск нужного userName доступен только посредством пролистывания страниц таблицы.

Запускаем в Selenium IDE labels (подключаем внешний js-файл).

Логика теста:

  1. кладем искомый userName в переменную.
  2. открываем первую страницу таблицы.
  3. ищем на этой странице нужное слово (конечно, предполагаем, что имя юзера непременно будет найдено)
  4. если нашли – кликаем по нему.
  5. если не нашли – кликаем по линку Next для перехода на следующую страницу таблицы
  6. снова ищем на этой странице нужное слово.
  7. если нашли – кликаем по нему.
  8. если не нашли – кликаем по линку Next для перехода на следующую страницу таблицы
  9. продолжаем до окончания страниц, которые можно пролистывать.
listPagesInTableForSearchExpectedWord
storeExpression Иван Столяров userName
label checkUserName
storeEval if (selenium.isTextPresent(storedVars[‘userName’]) == false) {nextMove = ‘listToNextPage‘} else if (selenium.isTextPresent(storedVars[‘userName’]) == true) {nextMove = ‘openUserPage‘} nextMove
gotolabel ${nextMove}
label listToNextPage
click link=Next
waitForPageToLoad 90000
gotolabel checkUserName
label openUserPage
clickAndWait //*[contains(text(), ‘${userName}’)]

Готово.

На всякий случай: есть большая разница между //*[contains(text(), ‘${userName}’)] и //*[text()=’${userName}’]. Второе условие жесткое и однозначное.

7 thoughts on “Пролистать страницы и найти нужное слово

    1. echo – вывод содержимого переменной “nextmove” в логе Selenium IDE.

      gotolabel – перейди к ярлыку, который называется тем словом, которое находится в переменной “nextmove”.

  1. Как узнать количество повторений слова на странице?

    То есть, если бы “Иван Столяров” было бы на странице несколько раз и нам надо было бы найти количество повторений, то как это можно сделать?

    Два шага:

    storeXpathCount | //*[contains(text(), ‘Иван Столяров’)] | variablea
    echo | ${variablea}

  2. отличный блог, много полезной информации. я только начинаю изучать IDE и столкнулась с проблемой, которую второй день не в состоянии решить.
    никак не могу получить листания, сразу идет переход на последнюю метку label: verifyIt. посмотрите скриншот тест-кейса, пожалуйста, http://screencast.com/t/OzRuNb3oeiL

      1. Алексей, спасибо за ответ. Думала и додумалась, что скрипт определяет совпадение текста в хлебных крошках, поэтому до перелистывания дело не доходит.

        как в вашем выражении if (selenium.isTextPresent(storedVars[‘eduName’]) == false) {nextMove = ‘listToNextPage’} else if (selenium.isTextPresent(storedVars[‘eduName’]) == true) {nextMove = ‘clickOnIt’} уточнить, что надо искать именно в //td[2], а не на всей странице?

  3. “isTextPresent” (оно же assertTextPresent) в принципе ищет по содержимому всей страницы, а не только в определенном элементе.

    Можно использовать assertText(locator, pattern)

    Например, в локаторе //td[2] есть текст “альфа”.

    Тогда в обычных условиях команду для Selenium IDE надо написать так:

    assertText
    //td[2]
    альфа

    Переведем на язык JS:

    (selenium.isElementPresent(“//td[2][contains(text(), ‘альфа’)]))

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s