Android 使用WebDriver和Appium从WebView读取HTML内容

Android 使用WebDriver和Appium从WebView读取HTML内容,android,selenium,webview,webdriver,appium,Android,Selenium,Webview,Webdriver,Appium,我正在尝试使用SeleniumWebDriver和Appium在android上自动化Gmail应用程序。我需要阅读电子邮件内容,然后验证它。但是完整的元素显示为一个单独的网络视图,我很抱歉,我无法从电子邮件中读取任何文本。请建议一种方式,以便我可以阅读电子邮件内容 使用的代码: package com.example.appium; import java.net.MalformedURLException; import java.net.URL; import java.util.List

我正在尝试使用SeleniumWebDriver和Appium在android上自动化Gmail应用程序。我需要阅读电子邮件内容,然后验证它。但是完整的元素显示为一个单独的网络视图,我很抱歉,我无法从电子邮件中读取任何文本。请建议一种方式,以便我可以阅读电子邮件内容

使用的代码:

package com.example.appium;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class GmailInvoke {
    /**
     * @param args
     * @throws MalformedURLException 
     * @throws InterruptedException 
     */
    public static void main(String[] args) throws MalformedURLException, InterruptedException {
        DesiredCapabilities capabilities=new DesiredCapabilities();
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "Android");

      //Gmail
        capabilities.setCapability("appPackage","com.google.android.gm");        
        capabilities.setCapability("appActivity", ".ui.MailActivityGmail");

        WebDriver driver=new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
        List <WebElement> emails = driver.findElements(By.className("android.widget.FrameLayout"));
        emails.get(5).click();
System.out.println(driver.findElement(By.id("com.google.android.gm:id/webview")).getText());
        Thread.sleep(5000);
        driver.quit();
    }
}
package com.example.appium;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.List;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.remote.DesiredCapabilities;
导入org.openqa.selenium.remote.RemoteWebDriver;
公共类呕吐{
/**
*@param args
*@抛出错误的DurException
*@抛出中断异常
*/
publicstaticvoidmain(字符串[]args)抛出畸形的durlexception、InterruptedException{
DesiredCapabilities=新的DesiredCapabilities();
能力。设置能力(“平台名”、“安卓”);
setCapability(“deviceName”、“Android”);
//Gmail
setCapability(“appPackage”、“com.google.android.gm”);
capabilities.setCapability(“appActivity”、“.ui.MailActivityGmail”);
WebDriver=新的RemoteWebDriver(新的URL(“http://127.0.0.1:4723/wd/hub(能力),;
列表电子邮件=driver.findElements(By.className(“android.widget.FrameLayout”);
电子邮件。获取(5)。单击();
System.out.println(driver.findElement(By.id(“com.google.android.gm:id/webview”)).getText();
睡眠(5000);
driver.quit();
}
}

我认为不可能自动安装预安装的应用程序。我也尝试过。

如果我很了解你,你是在尝试自动化一个混合应用程序(打开网络视图的本机应用程序)。在这种情况下,您需要将上下文切换到webview上下文。请参阅appium的文档: