我对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"));
非常感谢任何指导。
答案 0 :(得分:0)
您好将代码更新为以下代码:
Node** ptrlow
希望这适合你。