Selenium IDE не находит элементы xpath, которые содержат переменные во время выполнения, но действительны при редактировании / отладке - PullRequest
1 голос
/ 29 марта 2012

Я использую Selenium IDE 1.7.2 и Firefox 10.0.2

На странице, для которой я пишу тестовый скрипт, есть ячейка таблицы со следующим буквальным значением xpath:

.//*[@id='tab-22-div']/table/tbody/tr[2]/td[7]/div

У меня есть переменная с именем PDTabDiv, которая содержит значение: 22 * ​​1006 *

Шаг сценария Selenium IDE:

storeText | .//*[@id='tab-22-div']/table/tbody/tr[2]/td[7]/div | MyVar

работает правильно как при выполнении шага в режиме редактирования, так и при выполнении шага после нажатия кнопки «Выполнить». Когда я утверждаю, что он работает правильно, значение ячейки сохраняется в переменной MyVar, и этот шаг выполняется без ошибок.

Тем не менее, попытка нескольких методов использовать переменную для управления числом внутри части 'tab-22-div' в xpath не приводит к тому же успеху.

Я могу успешно создать корректную строку xpath, используя этот подход:

storeExpression | .//*[@id='tab-${PDTabDiv}-div']/table/tbody/tr[2]/td[7]/div | MyXpath

Переменная MyXpath содержит: .//*[@id='tab-22-div']/table/tbody/tr[2]/td[7]/div Однако при успешном выполнении в режиме редактирования следующий шаг сообщает о следующей ошибке при выполнении шага после нажатия кнопки «Выполнить»:

STEP
storeText | xpath=${MyXpath} | MyVar

ERROR
[error] Element xpath=.//*[@id='tab-22-div']/table/tbody/tr[2]/td[7]/div not found

Команда Selenese type, похоже, не показала проблемы, хотя я смог выполнить этот шаг через Run, и он всегда помещал значение 100 в правильное поле (которое находится в ячейке):

type | xpath=.//*[@id='document.budget.budgetPeriod[0].budgetLineItem[${MyLoopIndex}].budgetPersonnelDetailsList[0].percentEffort'] | 100

Возможно, я не использую правильный подход. Любая помощь будет с благодарностью. Немного предыстории, я использую плагин DataDriven для обработки нескольких записей на веб-сайте, и строки локаторов отличаются на каждой итерации.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Может быть во время работы, обязательный элемент не загружается при выполнении вашей команды. Вот почему вы получаете такую ​​ошибку. Сохранять команду pause до выполнения команды storeText

0 голосов
/ 29 марта 2012

Использовали ли вы команду waitForElementPresent перед вызовом storeText?

...