2017-08-18 124 views
0

我用下面的代码来测试Android应用程序与Appium的元素,但是当我尝试的元素Appium无法操作

driver.findElementById("com.TdMobile.ipems_app:id/login_ipaddress_edit").sendKeys("http://192.168.0.71:8080/ipems/"); 

java.lang.NullPointerException,当我调试到运行线,我发现元素不为null,有谁知道这发生了?

AndroidDriver driver = null; 
DesiredCapabilities cap = new DesiredCapabilities(); 
cap.setCapability("automationName", "Appium");//appium做自动化 
cap.setCapability("app", "C:\\Users\\baiming.zhang\\Desktop\\IPEMS-APP.apk"); 
cap.setCapability("deviceName", "xiaomi-mi_5");//设备名称 
cap.setCapability("platformName", "Android"); //安卓自动化还是IOS自动化 
cap.setCapability("platformVersion", "6.0"); //安卓操作系统版本 
cap.setCapability("udid", "794b155c"); //设备的udid (adb devices 查看到的) 
cap.setCapability("unicodeKeyboard", "True"); //支持中文输入 
cap.setCapability("resetKeyboard", "True"); //支持中文输入,必须两条都配置 
cap.setCapability("noSign", "True"); //不重新签名apk 
driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),cap);//把以上配置传到appium服务端并连接手机 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//隐式等待 

driver.findElementById("com.TdMobile.ipems_app:id/login_ipaddress_edit").sendKeys("http://192.168.0.71:8080/ipems/");//this line failed. 
driver.findElementById("com.TdMobile.ipems_app:id/login_user_edit").sendKeys("http://192.168.0.71:8080/ipems/"); 
driver.findElementById("com.TdMobile.ipems_app:id/login_passwd_edit").sendKeys("http://192.168.0.71:8080/ipems/"); 
driver.findElementById("com.TdMobile.ipems_app:id/login_login_btn").click(); 

完整堆栈跟踪是:

异常在线程 “主” 显示java.lang.NullPointerException在 org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:275) 在 org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:316) 在simple.CalculatorTest.main(CalculatorTest.java:47)

回答

1

我将AndroidDriver改为RemoteWebDriver,比它对我工作正常

0

最近Selenium更新至版本3.5.1似乎破坏了Appium的Java客户端。

更多信息here

虽然这个线程引用了Appium的java客户端5.0.0-BETA9,但我知道至少4.1.x版本也被破坏了,因为它发生在我身上。

那么,目前的解决办法是迫使硒的版本3.4.0,像这样:

compile ('org.seleniumhq.selenium:selenium-api:3.4.0'){force = true} 
compile ('org.seleniumhq.selenium:selenium-remote-driver:3.4.0'){force = true} 
compile ('org.seleniumhq.selenium:selenium-support:3.4.0'){force = true} 

它为我工作。