Selenium не может найти компонент после обновления dom (reRender)

Я тестирую приложение Richfaces с селеном. Он отлично работает, если я не использую reRender. (для тех, кто не знаком с Richfaces - всякий раз, когда запрос ajax завершается, части DOM обновляются/изменяются/удаляются).

Таким образом, после reRender селена (по крайней мере, в среде IDE) не удается найти элементы, которые находились в области повторного рендеринга. И FireBug, и WebDeveloper находят элементы, и в «источнике просмотра» элементы есть.

Итак, есть ли способ сказать селену обновить свои «знания» DOM с последними изменениями?

Firefox 3.5.6, последняя версия Selenium IDE.


person Bozho    schedule 21.12.2009    source источник


Ответы (2)


Я использую Firefox 3.6.8, Selenium IDE 1.0.7 и RichFaces 3.3.1, работающие на Ubuntu Linux. У меня нет этой проблемы.

У меня есть простая форма, в которой выбор переключателя вызывает повторную визуализацию a: outputPanel. Изначально панель пуста. Если выбрана правая кнопка-переключатель, условие визуализации выполняется, и панель повторно визуализируется с ее дочерними компонентами. Я могу настроить waitForCondition для поиска идентификатора элемента, который будет отображаться как дочерний элемент панели, и я могу проверить дочерние элементы после их появления. Selenium IDE правильно определяет эти дочерние элементы, когда я щелкаю правой кнопкой мыши в Firefox.

person T Bryan    schedule 15.08.2010
comment
так что, возможно, они исправили это в 1.0.7. - person Bozho; 15.08.2010

Selenium не хранит кешированную версию DOM. Это невозможно, потому что он использует JavaScript, а все DOM-запросы JavaScript всегда активны. .

Что вы используете для поиска элементов? Если вы используете селекторы Xpath/CSS, есть вероятность, что XPath больше недействителен или селектор CSS может быть неправильным.

person AutomatedTester    schedule 21.12.2009
comment
Я использую XPath. XPath действителен для элемента до повторного рендеринга и недействителен для того же элемента после повторного рендеринга. Используя WebDeveloper, я отслеживаю фактический путь к объекту, и XPath в Selenium IDE, похоже, не находит элементы, которые там наверняка существуют. - person Bozho; 21.12.2009
comment
Вы можете поместить фрагмент кода разметки до и после повторного рендеринга для элемента, который вы хотите. Если вы двигаетесь вниз по дереву, добавьте это тоже. Это поможет мне помочь вам с более надежным селектором - person AutomatedTester; 21.12.2009
comment
Я смогу сделать это завтра. Я попытался использовать наиболее конкретный селектор - следуя за детьми из тела, каждый раз на один уровень вниз, нажимая «найти». В момент, когда я достигаю области reRendered, элементы, которые показывает WebDeveloper, не могут быть расположены с использованием XPath в Selenium IDE. Кроме того, когда я нажимаю на это место в режиме записи, и область повторно отображается, IDE помещает INVALID_LOCATOR_.. (или что-то в этом роде), а если я делаю это до повторного рендеринга, он помещает правильный локатор. Так что я почти уверен, что это либо ошибка, либо я должен каким-то образом сказать ему обновить кеш. Но я не знаю как. - person Bozho; 21.12.2009