Селен:Можно ли объединить xpath с переменной?

StackOverflow https://stackoverflow.com/questions/403622

  •  03-07-2019
  •  | 
  •  

Вопрос

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

//div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form/fieldset/p[1 ]/вход

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

| AssertElementPresent | $ {myform}./набор полей/p[1]/вход |

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top