首页 文章

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

提问于
浏览
2

我有一个针对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无法定位元素 . 但是,无论我正在运行的Android操作系统级别如何,我都可以使用ADB命令操作该元素 . 这是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

    嗨将您的代码更新为以下代码:

    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", "*");
     capability.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
     return new AndroidDriver<MobileElement>(new Uri("http://127.0.0.1:4723/wd/hub"), capability);
    
    • 您的代码无法找到元素可能有几个原因:第一个是您提供的驱动程序类型是AppiumWebElement,因此它仅适用于Web元素,因此将其更改为MobileElement .

    • 第二个是您没有指定AUTOMATION_NAME功能 .

    希望这对你有用 .

相关问题