Selenium / Appium 1.7.2测试在Android 5.1上运行,但不在Android 8.0

时间:2018-05-09 17:10:37

标签: android appium appium-android

我对Android混合Web应用程序进行了Selenium / Appium测试,如果我使用运行Android OS 5.1的Pixel 2模拟器但不运行在运行Android OS 8.0的Pixel 2模拟器上运行。我已经尝试过其他模拟器/操作系统组合,它似乎是一个5.1 vs以后的问题。这似乎也是物理设备上的一个问题。

这是在本机环境下的登录屏幕上。

Android Studio拥有最新的SDK 27,其中包含最新的adv图像。 Selenium Driver是3.11.2。 Appium Server是1.7.2(桌面1.5.0)。

Appium日志显示uiautomator无法定位元素。但是,我可以使用ADB命令操作元素,而不管Android操作系统级别I是否正在运行。以下是5.1的驱动程序设置:

 DesiredCapabilities capability = new DesiredCapabilities();
 capability.SetCapability("deviceName", "emulator-5554");
 capability.SetCapability("fullReset", "True");
 capability.SetCapability("autoWebView", "true");
 capability.SetCapability("platformName", "Android");
 capability.SetCapability("platformVersion", "5.1"); //ONLY DIFFERENCE
 capability.SetCapability("appiumVersion", "1.7.2");
 capability.SetCapability("app", "c:/users/user/desktop/myapp.apk");
 capability.SetCapability("appWaitActivity", "*");
 return new AndroidDriver<AppiumWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), capability);

以下是8.0的驱动程序设置:

 DesiredCapabilities capability = new DesiredCapabilities();
 capability.SetCapability("deviceName", "emulator-5554");
 capability.SetCapability("fullReset", "True");
 capability.SetCapability("autoWebView", "true");
 capability.SetCapability("platformName", "Android");
 capability.SetCapability("platformVersion", "8.0"); // ONLY DIFFERENCE
 capability.SetCapability("appiumVersion", "1.7.2");
 capability.SetCapability("app", "c:/users/user/desktop/myapp.apk"); 
 capability.SetCapability("appWaitActivity", "*");
 return new AndroidDriver<AppiumWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), capability);

在设置和驱动程序实例化之后,这是针对Android 5.1但不针对8.0

的行
Username = _driver.FindElement(By.Id("myapp:id/username"));

我尝试了多种定位策略,但我并不确定我是否正确实施了这些策略。

对于任一操作系统版本,测试可以点击登录屏幕之前的EULA屏幕上的接受按钮。

Accept = _driver.FindElement(By.Id("android:id/button1"));

非常感谢任何指导。

1 个答案:

答案 0 :(得分:0)

您好将代码更新为以下代码:

Node** ptrlow
  1. 可能有几个原因导致代码无法找到 element:第一个是你给出的驱动程序类型 AppiumWebElement,因此它只适用于web元素 将其更改为MobileElement。
  2. 第二个是您没有指定AUTOMATION_NAME功能。
  3. 希望这适合你。