Как нажать кнопку динамического идентификатора в IDE Селена?
Я ищу его в течение 2 дней, но все еще не могу получить удовлетворительный ответ. Пожалуйста, помогите, я использую liferay, я хочу открыть выпадающее меню с именем "Добавить", а затем нажать кнопку "Отправить" с именем "Пустой сайт".. и обе кнопки "Добавить" и "Пустой сайт" содержат динамические значения /id, которые меняются каждый раз... прикрепление изображения для справки.
4 ответа
... кнопка содержит динамические значения /id, которые меняются каждый раз
XPath-х contains
Функция решает проблему с изменением идентификаторов.
Предположим, что ваш идентификатор "yui-patched-89898989" с "89898989" изменяемой частью.
Тогда селектор будет примерно таким:
//*[contains(@id, 'yui-patched-')]
Это работает для всех идентификаторов, которые содержат строку "yui-patched-".
Selenium поддерживает широкий спектр различных селекторов, кроме byId. XPath может ссылаться на текстовое значение внутри тега.
Также используя практически любой селектор, вы можете получить список, который может быть дополнительно отфильтрован по любым правилам.
Вы можете использовать xpath с любой комбинацией, одна из которых уже предложена @PedroMiguel, другая такая.
//*[contains(@id, 'yui-patched') and contains(@role,'menuitem')]
Используйте метод Xpath Contains:
Исходя из вашего 2 прикрепленного изображения, я думаю, что текст кнопки, который вы ищете, уникален для всей веб-страницы.
Что вы можете сделать, чтобы решить проблему:
- Для второго обстоятельства (
Blank Site
):- Xpath:
//li/a/span[contains(text(), "Blank Site")]
- Xpath: