Селен: возможно ли объединить xpath с переменной? - PullRequest
2 голосов
/ 31 декабря 2008

Xpath моих элементов становится чрезвычайно трудным для чтения.

// DIV [@ ид = 'main_content'] / дел [2] / дел [2] / дел [2] / дел [4] / таблица / TBODY / тр [2] / тд / форма / FIELDSET / р [1] / вход

Было бы хорошо, если бы я мог хранить большую часть этого как переменную и использовать ее позже, как это:

| assertElementPresent | $ {myForm}. / fieldset / p [1] / input |

Возможно ли что-то подобное? Это сделало бы мои тесты намного проще для чтения!

Ответы [ 2 ]

5 голосов
/ 31 декабря 2008

Вы действительно должны вместо этого привязать ваши селеновые эспрессии в идентификаторах элементов. Через 2 месяца никто не будет иметь ни малейшего представления о том, на что указывает xpath, особенно если тест не пройден в тот момент, когда вам необходимо это выяснить. Мы регулярно добавляем идентификаторы в элемент, чтобы облегчить тестирование. Мы научились признавать, что мы пишем java-код особым образом, чтобы сделать его тестируемым, и я думаю, что это нормально и для HTML.

1 голос
/ 23 июля 2009

Вы могли бы просто написать:

store | //div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form | myForm
assertElementPresent | xpath=${myForm}/fieldset/p[1]/input

Однако, как сказал Крозенволд, длинные пути могут быть довольно хрупкими. Если вы беспокоитесь о читабельности своего кода и хотите, чтобы все ваши локаторы были в одном файле, где вы можете вносить каскадные изменения, вы можете рассмотреть возможность использования карты UI-Element.

...