Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过使用appium执行driver.context()切换到WebView_Android_Selenium Chromedriver_Android Webview_Appium - Fatal编程技术网

Android 通过使用appium执行driver.context()切换到WebView

Android 通过使用appium执行driver.context()切换到WebView,android,selenium-chromedriver,android-webview,appium,Android,Selenium Chromedriver,Android Webview,Appium,问题 我使用appium在真实设备上实现android自动化。我切换到WebView use driver.context(“WebView_com.xxx.myapp”),然后执行driver.getPageSource(),出现一个问题,返回如下 capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName", "b307aa10");

问题

我使用appium在真实设备上实现android自动化。我切换到WebView use driver.context(“WebView_com.xxx.myapp”),然后执行driver.getPageSource(),出现一个问题,返回如下

        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "b307aa10");
        capabilities.setCapability("automationName", "appium");
        capabilities.setCapability("platformVersion", "8.1.0");
        capabilities.setCapability("appPackage", "com.dayizhihui.dayishi.hpv");
        capabilities.setCapability("appActivity", ".main.view.WelcomeActivity");
        capabilities.setCapability("noReset", "true");
        Map<String, Object> chromeOptions = new HashMap<String, Object>();
        chromeOptions.put("androidPackage", "com.android.chrome");
        capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions);
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        introducePageHandle.clickIntroduceIcon();
        System.out.println("Before " + driver.getContext());
        System.out.println("All Contexts " + driver.getContextHandles());
        driver.context("WEBVIEW_com.dayizhihui.dayishi.hpv");
        System.out.println("After " + driver.getContext());
        System.out.println("PageSource " + driver.getPageSource());

环境

appium:1.15.1
OS:Windows 10
API :java
Android:8.1
详细信息

我期望的能力如下

        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "b307aa10");
        capabilities.setCapability("automationName", "appium");
        capabilities.setCapability("platformVersion", "8.1.0");
        capabilities.setCapability("appPackage", "com.dayizhihui.dayishi.hpv");
        capabilities.setCapability("appActivity", ".main.view.WelcomeActivity");
        capabilities.setCapability("noReset", "true");
        Map<String, Object> chromeOptions = new HashMap<String, Object>();
        chromeOptions.put("androidPackage", "com.android.chrome");
        capabilities.setCapability(ChromeOptions.CAPABILITY,chromeOptions);
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        introducePageHandle.clickIntroduceIcon();
        System.out.println("Before " + driver.getContext());
        System.out.println("All Contexts " + driver.getContextHandles());
        driver.context("WEBVIEW_com.dayizhihui.dayishi.hpv");
        System.out.println("After " + driver.getContext());
        System.out.println("PageSource " + driver.getPageSource());
不切实际的结果

Before NATIVE_APP
All Contexts [NATIVE_APP, WEBVIEW_com.dayizhihui.dayishi.hpv, WEBVIEW_chrome]
After WEBVIEW_com.dayizhihui.dayishi.hpv
PageSource <html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><iframe name="chromedriver dummy frame" src="about:blank"></iframe></body></html>

本机应用程序之前的

所有上下文[NATIVE_应用程序、WEBVIEW_com.dayizhihui.dayishi.hpv、WEBVIEW_chrome]
在WEBVIEW_com.dayizhihui.dayishi.hpv之后
页面源
我真的很想有人能帮我解决这个问题,谢谢


切换到网络视图后,您需要切换到
iframe
,因为您试图与之交互的网络视图上存在iframe。
您可以切换到iframe,如:

driver.switchTo().frame(driver.findElement(By.name("chromedriver dummy frame")));

使用
autoWebview
设置功能:

capabilities.setCapability("autoWebview", true);

您在问题中提到的html是iframe,您是否尝试过我在回答中提到的代码?谢谢。我试过你的建议,但没有回音。事实上,这个框架不应该存在谢谢,html不是iframe,请检查我刚刚上传的照片谢谢,但它不适合我。我在appium服务器日志中看到一行代码,如下所示。也许这就是为什么
用driver.setContext()结果响应客户端:null