如何使用动态ID查找按钮

问题描述 投票:-1回答:3

我正在使用Appium自动化一个Android应用程序,我们需要单击带有动态ID的按钮。该按钮具有ID“ PROFILEBUTTON”或ID“ PROFILEMAILBUTTON”。除了坐标以外,还有什么可以用来自动单击此按钮的?

java selenium selenium-webdriver appium-android
3个回答
1
投票

使用PROFILEBUTTONPROFILEMAILBUTTON动态ID标识元素,可以将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')]"));

2
投票

您可以使用部分ID

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')]"));

0
投票

driver.findElement(By.xpath(“ // * [包含(@ resource-id,'profileMailButton')]或包含(@ resource-id,'profileMailPremiumButton')]”))))]]

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.