关于安卓版Appium Automation的问题



问题:

1.App 没有任何内容描述,在这种情况下我应该使用什么? 调用元素例如:有一个按钮,当我从UIautomator工具检查元素时需要点击该按钮,它在内容描述中没有任何内容,我还能考虑什么最好的方法来识别该元素

例如:资源 ID : au.com.carsguide:id/search_btn 内容描述 - 空白

如果我使用 Resource-id,appium 不会选择该值,它必须只是"search_btn"然后它选择值,为什么完整的包名称不支持资源 ID?

  1. b/w AndroidDriver和RemoteDriver有什么区别,我应该使用哪一个,如果使用RemoteDriver就像我们需要运行Selenium服务器吗?

3.我可以在实际设备上运行appium自动化,任何人都可以帮助我在Android模拟器上运行自动化吗? 怎么办?

使用AndroidDriver时可以看到以下错误:

FAILED CONFIGURATION: @BeforeClass setUpBeforeClass
java.lang.Error: Unresolved compilation problems: 
The return types are incompatible for the inherited methods    FindsByAccessibilityId<WebElement>.findElementsByAccessibilityId(String),   AppiumDriver<RequiredElementType>.findElementsByAccessibilityId(String)
The return types are incompatible for the inherited methods   FindsByCssSelector.findElementsByCssSelector(String),   AppiumDriver<RequiredElementType>.findElementsByCssSelector(String)
The return types are incompatible for the inherited methods  WebDriver.findElements(By), AppiumDriver<RequiredElementType>.findElements(By)
The return types are incompatible for the inherited methods  FindsById.findElementsById(String),  AppiumDriver<RequiredElementType>.findElementsById(String)
The return types are incompatible for the inherited methods  FindsByLinkText.findElementsByLinkText(String),  AppiumDriver<RequiredElementType>.findElementsByLinkText(String)
The return types are incompatible for the inherited methods  FindsByXPath.findElementsByXPath(String),  AppiumDriver<RequiredElementType>.findElementsByXPath(String)
The return types are incompatible for the inherited methods  FindsByName.findElementsByName(String),  AppiumDriver<RequiredElementType>.findElementsByName(String)
The return types are incompatible for the inherited methods  FindsByTagName.findElementsByTagName(String),  AppiumDriver<RequiredElementType>.findElementsByTagName(String)
The return types are incompatible for the inherited methods  FindsByLinkText.findElementsByPartialLinkText(String),  AppiumDriver<RequiredElementType>.findElementsByPartialLinkText(String)
  1. 少即是好。为什么要访问带有包名称的 id?顺便说一下,您在功能中指定了包名称,因此 appium 在内部使用带有包名称的 id 来查找应用程序组件。如果组件属于其他应用程序,则需要提供带有其包名称的 id。

  2. 你不需要运行 Selenium 服务器,你需要运行 Appium Server。AndroidDriver 扩展了抽象 AppiumDriver,它扩展了 DefaultGenericMobileDriver(这也是抽象的),这个 abtract 类再次扩展了 RemoteWebDriver。

因此,AndroidDriver比RemoteWebDriver拥有更多的API/功能。所以你可以选择安卓司机。

    • 您可以使用Genymotion模拟器
    • 运行模拟器时,在终端中执行命令adb devices以获取模拟器 ID
    • 使用模拟器 ID 192.168.56.101:5555实现 deviceNameudid appium 功能

最新更新