Использование селена waitForCondition с xpath - PullRequest
6 голосов
/ 16 июня 2009

Selenium имеет хорошую поддержку для поиска элементов на странице через xpath

selenium.isElementPresent("//textarea")

и на страницах ajax вы можете использовать waitForCondition для ожидания на странице, пока что-то не появится

selenium.waitForCondition("some_javascript_boolean_test_as_a_string", "5000")

Моя сложность заключается в том, что я не могу получить возможность использовать поддержку xpath для логического теста. document.getElementById вроде бы работает нормально, а selenium.isElementPresent - нет.

Есть ли простой способ получить доступ к способностям поиска элементов xpath в селене из первого параметра waitForCondition?

Ответы [ 3 ]

8 голосов
/ 22 апреля 2010

Более простой способ сделать это:

selenium.waitForCondition("selenium.isElementPresent(\"xpath=//*[@id='element_id_here']/ul\");", time_out_here);
5 голосов
/ 02 июля 2009

Вы можете сделать что-то вроде этого:

selenium.waitForCondition(
    "var x = selenium.browserbot.findElementOrNull('elementIdOrXPathExpression');"
  + "x != null && x.style.display == 'none';", "5000");

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

Единственным недостатком является то, что вы теперь также полагаетесь на браузер-бот и базовый js API нижнего уровня.

3 голосов
/ 16 июня 2009

Если вы хотите выбрать элемент по id, самое простое - использовать прямое выделение:

 isElementPresent("textarea")

Если вы настаиваете на использовании xpath, возможно, вам придется использовать

isElementPresent("//*[@id='textarea']")

или

isElementPresent("//id('textarea')")

(функция id может быть не совместима с разными браузерами)

Если это не поможет, ваш HTML-документ может также иметь структурные проблемы, которые вызывают это. Запустите HTML-валидатор, такой как html validator , чтобы проверить наличие проблем с вложением и аналогичные на вашей странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...