【问题标题】:Questions on Appium Automation on Android关于 Android 上 Appium 自动化的问题
【发布时间】:2016-06-24 20:08:46
【问题描述】:

问题:

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

例如:资源 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)

【问题讨论】:

    标签: java android selenium automation appium


    【解决方案1】:
    1. 少即是好。为什么要使用包名访问 id ?顺便说一句,您在功能中指定了包名称,因此 appium 在内部使用 id 和包名称来定位应用程序组件。如果组件属于其他应用,则需要提供 id 及其包名。

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

    所以 AndroidDriver 比 RemoteWebDriver 有更多的 API/功能。所以你可以选择AndroidDriver。

    【讨论】:

    • 感谢回复,1个指针很好,我明白了。都好。 2. 指针我尝试提供AndroidDriver,但得到上述错误。提供为:public static AndroidDriver 驱动程序;还尝试使用公共静态 AndroidDriver 驱动程序;
    • 但是如果我删除 AdnroidDriver 并添加 RemoteDriver 它工作正常
    • 试试我在项目中使用的这个语法 -> public static AndroidDriver driver; new AndroidDriver(new URL("http://"+url+ ":" +serverPort+ "/wd/hub"), 能力);
    • 感谢@shekhar swami,它成功了,我只是使用了 AndroidDriver,它成功了
    • 干杯!快乐的自动化 :)
    【解决方案2】:
      • 您可以使用Genymotion emulator
      • 当模拟器运行时,在终端执行命令adb devices以获取模拟器ID
      • deviceNameudid 使用模拟器ID 192.168.56.101:5555 appium capabilities

    【讨论】:

    • 如果我使用 Android 虚拟设备管理器怎么样?它也有用吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2016-08-23
    • 2017-10-21
    • 2017-12-20
    • 1970-01-01
    • 2019-12-05
    • 2020-09-13
    相关资源
    最近更新 更多