2016-09-16 162 views
0

我想我SeeTest套件转换成Appium,但我有一个大问题:Appium选择元素的ID

我不能选择通过他们的@id属性的元素。当我尝试按ID选择时,它会显示“找不到元素”。当我通过uiautomateviewer查看apk时,看不到任何元素@id

SeeTest需要一个apk来成为“仪器化”,以便通过@id进行选择。 Appium有没有相当的“仪器”?

+0

如果您使用'id''定位器策略,如果您使用xpath或'id'(而不是'@ id'),则使用'@ resource-id'。但是,在xpath的情况下,您需要完整的id,包名和':id /'部分。 – njzk2

+0

@ njzk2否@ @ resource-id在uiautomatorviewer中都可见。我正在使用API​​版本17(Android 4.2.2),如果这是相关的 –

+0

resource-id仅仅是您在您的视图中的id xml布局 – njzk2

回答

0

原来这是因为Appium只支持通过Android API级别18+的id进行选择。我17岁,所以我切换到Selendroid Appium后端。

0

一个很好的经验法则是,如果它没有出现在Appium检查器中,请不要使用它。你可以做的是沿着线的东西:

driver.findElement(By.xpath("//<UIElementType[contains(@<identifier>, '<identifier value>')]>");

凡标识符可以是

  • 名称或内容递减

  • 标签

  • 文本

等等。

希望这将有助于您的更改。

+0

那么,我有一个很大的自动化框架已经在使用id的(与SeeTest作为后端)。我只想让Appium的行为与SeeTest相同,因为ID的 –

+0

名称在Android上不起作用。标签也没有。你最好的投注是资源ID,内容desc和文本。 – njzk2

+0

我目前无法访问我的appium代码,但有可能以上述方式找到它,但是使用'contains(@ resource-id,'com.package.path.id')' 否则I不知道是否有办法以类似的方式找到。你能否告诉我一个你的SeeTest如何工作的例子。我不熟悉它。 – JaysonP

0
public void athenaclick(String element) { 
    WebElement webElement = driver.findElement(By.id(element)); 
    webElement.click(); 
    System.out.println("Click element: "+element); 
} 

在seetest当你乐器你会得到额外的属性可能不可用时appium如:文本颜色为seetest是支付工具,appium是开源的。