我正在尝试自动化Selendroid的测试App .

这有混合视图 .

即使在更改上下文后,我也无法在WebView上执行任何活动 .

来自Selendroid UI的测试应用程序:/selendroid-test-app-0.17.0.apk

Appium版本:1.6.5

Script: driver.findElementById("io.selendroid.testapp:id/buttonStartWebview").click();

Set<String> views = driver.getContextHandles();


    Iterator it=views.iterator();

    while(it.hasNext()){
        System.out.println(it.next());
    }

    driver.context("WEBVIEW_io.selendroid.testapp");
    Thread.sleep(3000);
    System.out.println("Current view is"+driver.getContext());

    System.out.println(driver.getPageSource());
    driver.findElement(By.xpath("//*[@id='name_input']")).sendKeys("test");;

Eclipse Log


[TestNG]正在运行:

NATIVE_APP WEBVIEW_io.selendroid.testapp当前视图是WWEVIEW_io.selendroid.testapp

<html><head><title>Say Hello Demo</title></head><body>Hello, can you please tell me your name?<form name="myform" action="http://localhost:4450/sayhello" method="get"><div align="center"><br><br><input type="text" id="name_input" name="name" size="25" value="Enter your name here!"><br><p>Prefered Car:<br><select name="car"><option value="volvo">Volvo</option><option value="mercedes">Mercedes</option><option value="audi">Audi</option></select></p><br><input type="submit" value="Send me your name!"><br></div></form><iframe name="chromedriver dummy frame" src="about:blank"></iframe></body></html>

失败:F org.openqa.selenium.ElementNotVisibleException:元素不可见(会话信息:网页流量= 30.0.0.0)(驱动程序信息:chromedriver = 2.28.455520(cc17746adff54984afff480136733114c6b3704b),平台= Windows NT的10.0.10586 x86_64的)(警告:服务器没有提供任何堆栈跟踪信息)命令持续时间或超时:1.04秒构建信息:版本:'2.53.1',修订版:'a36b8b1cd5757287168e54b817830adce9b0158d',时间:'2016-06-30 19:26:09'系统信息:主机:'INHYIZLP06494',ip:'10 .7.60.141',os.name:'Windows 10',os.arch:'amd64',os.version:'10 .0',java.version:'1.8.0_141'驱动程序信息: io.appium.java_client.android.AndroidDriver功能[{app = D:\ RnD \ WorkspaceDev \ Appium \ AUT \ selendroid-test-app-0.17.0.apk,appPackage = io.selendroid.testapp,deviceScreenSize = 1280x720,networkConnectionEnabled = true,warnings = {},appWaitPackage = io.selendroid.testapp,appWaitActivity = io.selendroid.testapp.HomeScreenActivity,databaseEnabled = false,deviceName = emulator-5554,platform = LINUX,d eviceUDID = emulator-5554,appActivity = io.selendroid.testapp.HomeScreenActivity,desired = {app = D:\ RnD \ WorkspaceDev \ Appium \ AUT \ selendroid-test-app-0.17.0.apk,platformName = Android,deviceName = emulator-5554},platformVersion = 4.4.2,webStorageEnabled = false,locationContextEnabled = false,takesScreenshot = true,javascriptEnabled = true,deviceModel = SM-G900F,platformName = Android,deviceManufacturer = samsung}]会话ID:9b4cd26a-1d77-4087 -8ce9-d87fbdef24e0 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang位于org.openqa.selenium.remote上的org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)的.reflect.Constructor.newInstance(Constructor.java:423),ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158 )org.openqa.selenium.remote.RemoteWebD river.execute(RemoteWebDriver.java:678)在io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40)在io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)在io.appium.java_client .android.AndroidDriver.execute(AndroidDriver.java:1)在org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:327)在io.appium.java_client.DefaultGenericMobileElement.execute(DefaultGenericMobileElement.java:33)在io.appium.java_client.MobileElement.execute(MobileElement.java:1)在io.appium.java_client.android.AndroidElement.execute(AndroidElement.java:1)在org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement . 的java:122)在HybridApp.SelendroidTestHybrid.f(SelendroidTestHybrid.java:52)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl java.la上的.invoke(DelegatingMethodAccessorImpl.java:43)位于org.test.invoke.invokeMethod(MethodInvocationHelper.java:104)的org.test.invoke(Method.vava:644)的org.test.invoke.invokeModod(Invoker.java:645)的ng.reflect.Method.invoke(Method.java:498) .testng.internal.Invoker.invokeTestMethod(Invoker.java:851)在org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)在org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)在org.testng.TestMethodWorker.run(TestMethodWorker.java:112)org.testng.TestRunner.privateRun(TestRunner.java:756)org.testng.TestRunner.run(TestRunner.java:610)atg.testng .OiteRunner.runTest(SuiteRunner.java:387)org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)at org.testng.SuiteRunner.run( SuiteRunner.java:289)org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)atorg.testng.TestNG.runSuitesSequentially(TestNG.java:1293)org.testng.TestNG.runSuitesLocally(TestNG.java:1218)org.testng.TestNG.runSuites(TestNG.java:1133)atg.testng.TestNG .run(TestNG.java:1104)org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)atg.testng.remote . RemoteTestNG.main(RemoteTestNG.java:81)