【问题标题】:How to locate a button with a dynamicID如何定位具有 dynamicID 的按钮
【发布时间】:2018-10-11 10:24:54
【问题描述】:

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

【问题讨论】:

  • 你能添加它的html代码吗?
  • 尝试通过不同的定位器进行定位 - CSS、名称等
  • 该元素没有唯一的定位符。

标签: java selenium selenium-webdriver appium-android


【解决方案1】:

你可以使用部分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')]"));

【讨论】:

  • 在这种情况下,您可以(应该?)更加具体,并使用以...[id^='PROFILE'][id$='BUTTON'] 开头和结尾来减少/消除错误匹配。
  • 这同样适用于 xpath 吗?因为 css 不适用于我的应用。
  • @sandy 编辑了我的答案
  • 我收到一个错误。参数是无效的选择器(例如 XPath/CSS)
  • @sandy 编辑了xpath
【解决方案2】:

要使用 动态 ID 标识元素,PROFILEBUTTONPROFILEMAILBUTTON 您可以使用带有以下通配符的 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')]"));

【讨论】:

  • 请问这个用xpath怎么写
  • @sandy 查看我的答案更新并告诉我状态
  • 我收到一个错误。参数是无效的选择器(例如 XPath/CSS)
  • @sandy 你能更新我的tag 名称吗,它将包含具有上述 ID 的元素
  • resource-id:" net.ilius.android.meetic:id/profileMailButton" 或这个 "net.ilius.android.meetic:id/profileMaiPremiumlButton" 我用过:driver.findElement(By.xpath ("//*[contains(@resource-id,'net.ilius.android.meetic:id/profileMail')]"));
【解决方案3】:

driver.findElement(By.xpath("//*[contains(@resource-id,'profileMailButton') or contains(@resource-id,'profileMailPremiumButton')]"));

这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2021-03-05
    • 2014-08-19
    相关资源
    最近更新 更多