Pruebas automatizadas de WebView de aplicaciones híbridas

 Todos han leído la configuración desde el principio. Su problema puede no estar en la configuración de webview. Puede aparecer en el controlador. Otro punto importante es que el teléfono móvil no necesita descargar Google Chrome. Solo necesita configurar el controlador chromedriver. versión de appium y WebView del sistema Android, siempre que la versión sea la misma (hay muchos casos en Internet que dicen que es necesario instalar Google Chrome, si la prueba personal falla, se informará un error:

io.appium.java_client.NoSuchContextException: An unknown server-side error occurred while processing the command. Original error:

Aplicaciones híbridas y nativas

¿Qué es una aplicación híbrida? De hecho, esto es evidente. Normalmente, nuestras aplicaciones deberían ser nativas, pero en el trabajo real, no lo son. De todos modos, por varias razones, nuestras aplicaciones serán nativas y habrá H5 en el En el medio. Página, esto es en realidad lo que a menudo llamamos híbrido. Por supuesto, también existe el H5 puro, pero no explicaremos demasiado aquí.

Herramienta de posicionamiento de elementos WebView

  • Utilice el método driver.page_source para escribir el contenido de la página obtenido en un archivo html, luego use un navegador para abrir el archivo html y use la herramienta de depuración F12 para el posicionamiento de elementos (nivel de código)
  • Para las herramientas de desarrollo, la herramienta de depuración que viene con el navegador Chrome, ingrese: chrome://inspect#devices. Esta herramienta necesita acceder a sitios web extranjeros, por lo que debe sortear el muro.
  • Para utilizar las herramientas de depuración para desarrolladores de UC, debe instalarlas con anticipación y no es necesario eludir el firewall (Herramienta: UC-devtools) Dirección del sitio web oficial: https://dev.ucweb.com/docs/pwa/docs-zh /xy3whu

 Se recomienda que utilice UC-devtools. Después de descargarlo del sitio web oficial, puede usarlo con configuraciones simples. Al usarlo, necesita conectar su teléfono con USB a través de USB ; compruébelo en la página de inicio.

 Preparación

 El primer paso es abrir la configuración del teléfono y buscar administración de aplicaciones.

Esta es la dirección de descarga del controlador Chromedriver nacional: http://npm.taobao.org/mirrors/chromedriver/

Descargue el controlador correspondiente de acuerdo con el número de versión obtenido en la configuración de administración de la aplicación móvil. El número de versión en el ejemplo aquí es (79.0.3945) y el controlador correspondiente se muestra a continuación:

Haga clic para descargar el paquete comprimido de la siguiente manera:

 Descomprima el paquete comprimido descargado en un directorio de archivos personalizado. No es necesario reemplazar el controlador chromedriver que viene con appium ( recuerde que el directorio del controlador que descargó es solo para configuración posterior);

 Configuración de prueba automatizada de Java appium webview

 Sin más preámbulos, vayamos directo al código:

/**
 * @Author HLY
 * @Create 2020-03-23 17:41
 */
public class TTest {
    
    AndroidDriver driver;

    @Before
    public void befor(){
            DesiredCapabilities capabilities = new DesiredCapabilities();
            //appium的版本
            capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "v1.8.1");
            //android系统的版本
            capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "android_version_xx");
            //系统
            capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
            //驱动
            capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");//UiAutomator1和UiAutomator2使用区别在于版本限制,V1.14.0以上的版本建议使用UiAutomator1

            capabilities.setCapability(MobileCapabilityType.UDID, "deviceName_xx");
            //设备名称 模拟器名称
            capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "deviceName_xx");
            //capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
            //设置app的包名
            capabilities.setCapability("appPackage", "com.xx.xx");
            //设置app的启动activity
            capabilities.setCapability("appActivity", ".xxActivity");
            //capabilities.setCapability("newCommandTimeout", 2000);x
            //此处的地址是appium中的host地址,可以自己修改,只要与appium对应就可以
            capabilities.setCapability("noReset", true);
            //支持中文输入
            capabilities.setCapability("unicodeKeyboard", true);
            //重置输入法到原有状态
            capabilities.setCapability("resetKeyboard", true);
            //设置你下在的 chromedriver驱动路径,路径只写到ChromeDriver.exe的上层目录
            capabilities.setCapability("chromedriverExecutableDir","D:\\xx\\ChromeDriver\\chromedriver_win79.0.3945.36");
        try {
            this.driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1: 4723/wd/hub"), capabilities);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        TouchAction touchAction =new TouchAction(driver);
    }

    /**
     * @throws InterruptedException
     */
    @Test
    public void test() throws InterruptedException, IOException {
        //TODO 你的原生app自动化逻辑
        ...
        ...
        ...
        //TODO 切换到 webview 前提条件是当前页面必须是webview
        //这里才会获取到上下文呢信息,
        Set<String> contextNames = driver.getContextHandles();
        for (String contextName : contextNames) {
            System.out.println(contextName); //prints out something like NATIVE_APP \n WEBVIEW_1
        }
        //WebDriver webDriver = driver.switchTo().window((String) contextNames.toArray()[1]);
        driver.context((String) contextNames.toArray()[1]);// set context to WEBVIEW_1
        driver.findElement(By.xpath("//*[@id=\"btn\"]")).click();
        Thread.sleep(10000);
        //切换回原生
        driver.context((String) contextNames.toArray()[0]);
        System.out.println("WebView自动化测试完成");
    }

    @After
    public void after(){
        driver.quit();
    }
}

También necesita iniciar el servicio appium. Puede ejecutar el caso de uso aquí. Es efectivo en pruebas personales. Si no entiende, puede dejar un mensaje o enviar un mensaje privado. Responderé a todos tan pronto como Yo lo veo.

Supongo que te gusta

Origin blog.csdn.net/paroleg/article/details/107878240
Recomendado
Clasificación