es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando Appium no es posible deslizar desde abajo hacia arriba para abrir el centro de control en iOS 15.

Me gustaría abrir el centro de control de iOS (para activar el modo avión) utilizando Appium 1.22 con iOS 15.1. El código que estoy utilizando funciona bien con iOS 14.8. He intentado utilizar TouchAction y PointerInput Actions, con el mismo resultado. La pantalla se desplaza hacia arriba en 15.1 pero el centro de control no aparece. Cualquier ayuda sería apreciada, estoy bloqueado con las pruebas automatizadas en iOS 15.

Entorno:
iOS 15
Appium 1.22

Mi código:

        Dimension d = driver.manage().window().getSize();
        int width = d.getWidth();
        int height = d.getHeight();

        int w = (int) (.5 * width);
        int swipeTo = (int) (height * 0.2);

        PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
        Sequence swipeUpForControlCentre = new Sequence(finger, 1);
        swipeUpForControlCentre.addAction(finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), w, height));
        swipeUpForControlCentre.addAction(finger.createPointerDown(0));
        swipeUpForControlCentre.addAction(finger.createPointerMove(Duration.ofMillis(700),
            PointerInput.Origin.viewport(),w, swipeTo));
        swipeUpForControlCentre.addAction(finger.createPointerUp(0));
        driver.perform(Arrays.asList(swipeUpForControlCentre));
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay una solución fácil para este problema, ya que Apple ha cambiado la forma en que funciona el Centro de control en iOS 15. En lugar de ser una vista separada que se puede deslizar hacia arriba desde la parte inferior de la pantalla, ahora es una superposición que aparece en la parte superior de la vista actual cuando se desliza hacia abajo desde la esquina superior derecha de la pantalla. Esto significa que los antiguos métodos de deslizar desde la parte inferior de la pantalla ya no funcionan.

    Una solución alternativa para esto es utilizar el gesto “arrastrar desde el borde de la aplicación”, que simula que un usuario arrastra el dedo desde el borde de la pantalla hacia la aplicación. Esto se puede utilizar para activar la superposición del Centro de control. Aquí tienes un ejemplo de cómo hacer esto en Java con Appium:

    import io.appium.java_client.MultiTouchAction;
    import io.appium.java_client.TouchAction;
    import io.appium.java_client.touch.WaitOptions;
    import io.appium.java_client.touch.offset.PointOption;
    import java.time.Duration;
    import org.openqa.selenium.Dimension;
    
    // obtener las dimensiones de la pantalla
    Dimension screenSize = driver.manage().window().getSize();
    int screenWidth = screenSize.getWidth();
    int screenHeight = screenSize.getHeight();
    
    // calcular el punto de inicio y el punto de fin del deslizamiento
    int startX = (int) (screenWidth * 0.95);
    int startY = (int) (screenHeight * 0.05);
    int endX = (int) (screenWidth * 0.95);
    int endY = (int) (screenHeight * 0.3);
    
    // crear un TouchAction para deslizar desde el borde de la aplicación
    TouchAction touchAction = new TouchAction(driver);
    touchAction.press(PointOption.point(startX, startY))
        .waitAction(WaitOptions.waitOptions(Duration.ofMillis(500)))
        .moveTo(PointOption.point(endX, endY))
        .release()
        .perform();
    
    // crear un MultiTouchAction para realizar un gesto de "toque con dos dedos" para cerrar la superposición del Centro de control
    MultiTouchAction multiTouchAction = new MultiTouchAction(driver);
    multiTouchAction.add(new TouchAction(driver).tap(PointOption.point(50, 50)));
    multiTouchAction.add(new TouchAction(driver).tap(PointOption.point(100, 100)));
    multiTouchAction.perform();
    

    Este código deslizará desde la esquina superior derecha de la pantalla hacia la aplicación, lo que debería activar la superposición del Centro de control. Luego realizará un gesto de “toque con dos dedos” para cerrar la superposición. Ten en cuenta que las coordenadas del toque son solo valores arbitrarios y es posible que deban ajustarse según tu aplicación y dispositivo.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta.

Comments are closed.