2017-03-02 55 views
0

我已经为Android编写了测试自动化脚本,其中使用了selenium和Appium以及Java作为编码语言。脚本在Android 6 Emulator上运行得非常好。但是,在Android 7仿真器上,驱动程序将启动应用程序,但无法找到应用程序上的任何元素。无法在Android 7仿真器中使用最新的Appium查找元素

示例代码:

DesiredCapabilities capabilities = new DesiredCapabilities(); 

capabilities.setCapability("noReset", "true"); 

capabilities.setCapability("deviceName", "Nexus_5_API_24_Automation"); 

capabilities.setCapability("platformName", "Android"); 

capabilities.setCapability("app","D:\\MyProject\\apk\\test-app-6.31.11.apk"); 

capabilities.setCapability("newCommandTimeout", 0); 

try {  
    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities); 
} catch (Exception e) {  
    Assert.fail("The app launched failed."); 
} 

CommonUtils.waitInSeconds(10); // Custom method with Thread.sleep() method to wait for 10 secs 


driver.findElement(By.xpath("//android.widget.TextView[@text='Device']")).click(); 


driver.closeApp(); 

driver.quit(); 

哪里android.widget.TextView是类的名字,“文本”属性包含“设备”为文本。

当我运行这个,它在driver.findElement步骤失败并抛出NoSuchElementException。

带有文字“设备”的元素是一个标签名称,并且在Android 6模拟器上可见并且是可见的。

对于Android 6,我使用Appium 1.4.13 GUI版本。

对于Android 7,我使用Appium版本1.6.3的非UI版本。

Appium客户端库:Java的客户端 - 4.1.2.jar

请注意:因为他们不是目前在我的组织可我不能使用的设备。

我完全不知道是什么导致了这个问题。任何帮助都感激不尽。提前致谢!

回答

0

启动Appium GUI Inspector并检查该元素是否具有文本属性。 通过在GUI中提供模拟器名称并在CLI中启动Appium 1.6.3(因此启动appium 1.6.3,打开appium GUI 1.5并单击检查器),您可以将Appium 1.5 GUI与检查器一起使用,如果您提供了应用程序的路径并且其他“工作人员”的设置。

+0

非常感谢您的帮助!该元素确实有一个文本属性,但我发现还有另一个问题。文本属性中的文本在Android 7.0中自动大写,因为它在Android 6.0中为小写字母。这就是它失败的原因。现在开发人员已同意将所有文本更改为大写字母:) –

相关问题