我正在使用Appium自动化Android应用,我们需要点击带有动态ID的按钮。按钮的ID为“PROFILEBUTTON”或ID为“PROFILEMAILBUTTON”。除了坐标之外,还有什么可以用来自动点击这个按钮?
答案 0 :(得分: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')]"));
答案 1 :(得分:1)
要识别动态ID 的元素 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')]"));
答案 2 :(得分:0)
driver.findElement(By.xpath(" // * [contains(@ resource-id,' profileMailButton')或包含(@ resource-id,' profileMailPremiumButton' ;)]&#34));
这对我有用。