Как найти кнопку с динамическим идентификатором - PullRequest
0 голосов
/ 01 мая 2018

Я автоматизирую приложение для Android с помощью Appium, где нам нужно нажать кнопку с динамическим идентификатором. Либо у кнопки есть идентификатор «PROFILEBUTTON» или «PROFILEMAILBUTTON». Помимо координат, что еще можно использовать для автоматизации нажатия этой кнопки?

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Чтобы идентифицировать элемент с динамическим идентификатором либо PROFILEBUTTON или PROFILEMAILBUTTON , вы можете использовать cssSelector со следующими подстановочными знаками:

  • ^: указание значения атрибута начинается с

  • $: для указания значения атрибута заканчивается

Таким образом, наиболее детализированный локатор должен включать в себя стратегию поиска начальных букв, т. Е. PROFILE и конечных букв, т. Е. BUTTON и должен быть:

driver.findElement(By.cssSelector("[id^='PROFILE'][id$='BUTTON']"));

Обновление

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

driver.findElement(By.xpath("//*[contains(@resource-id,'profileMail') and contains(@resource-id,'Button')]"));
//or
driver.findElement(By.xpath("//*[contains(@resource-id,'profileMailButton') or contains(@resource-id,'profileMailPremiumButton')]"));
0 голосов
/ 02 мая 2018

driver.findElement (By.xpath ("// * [содержит (@ resource-id, 'profileMailButton') или содержит (@ resource-id, 'profileMailPremiumButton')]"));

Это сработало для меня.

0 голосов
/ 01 мая 2018

Вы можете использовать частичный идентификатор

driver.findElement(By.cssSelector("[id*='PROFIL'][id*='BUTTON']"));

или с xpath

driver.findElement(By.cssSelector("//*[contains(@id, 'PROFIL') and contains(@id, 'BUTTON')]"));

driver.findElement(By.cssSelector("//*[contains(@id, 'PROFIL')][contains(@id, 'BUTTON')]"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...