Как взаимодействовать с эмулятором смартфона с помощью Appium? - PullRequest
1 голос
/ 17 января 2020

Я использую следующий код, чтобы попытаться смахнуть влево на экране iPhone (и Android, но сейчас он сфокусирован на iOS), в частности приложение, но я не могу получить телефон провести пальцем влево.

Назначение кода:

Предполагается, что приведенный ниже код смахивает экран влево, когда приложение открыто, и делает снимок экрана после каждого пролистывания.

Что на самом деле происходит:

Экран вообще не взаимодействует и постоянно зависает.

Если кто-то здесь может прийти к выводу, что приведенный ниже код работает на их, то мне, вероятно, придется попробовать другой файл .ipa.

Я получил следующий код из GIST

Что я пробовал:

  1. Я пытался сменить телефон и операционную систему

    caps.setCapability («устройство», «iPhone 8 Plus»); caps.setCapability ("os_version", "11");

Не повезло.

Я также попытался изменить координаты X и Y, чтобы посмотреть, может ли это решить проблему, но независимо от того, изменились ли X и Y, экран не дал результатов.

Я подозреваю, что я не использую правильный импорт. С кодом ниже, следующие импорты не используются. Скорее всего, потому что код из GIST может быть устаревшим?

 import java.util.List;
import java.util.Set;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
import io.appium.java_client.MobileBy;
import static java.time.Duration.ofSeconds;

Для получения дополнительной информации об этом проекте вы можете сослаться на этот вопрос, который я задал, который отображает весь код, с которым я сейчас работаю

Предыдущий вопрос

import java.io.File;
import java.net.URL;
import java.time.Duration;
import java.util.List;
import java.net.MalformedURLException;
import java.util.Set;
import io.appium.java_client.TouchAction;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import io.appium.java_client.MobileBy;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSElement;
import static java.time.Duration.ofSeconds;

    public class BrowserStackIOS {


    public static void main(String args[]) throws MalformedURLException, InterruptedException {
        DesiredCapabilities caps = new DesiredCapabilities();


        caps.setCapability("device", "iPhone 6S");
        caps.setCapability("os_version", "12");
        caps.setCapability("project", "My First Project");
        caps.setCapability("build", "My First Build");
        caps.setCapability("name", "");
        caps.setCapability("app", "");


        IOSDriver<IOSElement> driver = new IOSDriver<IOSElement>(new URL("http://"+userName+":"+accessKey+"@hub-cloud.browserstack.com/wd/hub"), caps);

        driver.getContextHandles();
        Thread.sleep(5000);

        take_screenshot(driver);


        // First Swipe
        TouchAction action = new TouchAction(driver);
        action.press(PointOption.point(197,619))
                .waitAction(new WaitOptions().withDuration(Duration.ofMillis(600))) //you can change wait durations as per your requirement
                .moveTo(PointOption.point(209, 392))
                .release()
                .perform();

        Thread.sleep(5000);

        take_screenshot(driver);

        // Second Swipe
        action.press(PointOption.point(197,619))
                .waitAction(new WaitOptions().withDuration(Duration.ofMillis(600))) //you can change wait durations as per your requirement
                .moveTo(PointOption.point(209, 392))
                .release()
                .perform();

        Thread.sleep(5000);

        take_screenshot(driver);

        // Third Swipe
        action.press(PointOption.point(197,619))
                .waitAction(new WaitOptions().withDuration(Duration.ofMillis(600))) //you can change wait durations as per your requirement
                .moveTo(PointOption.point(209, 392))
                .release()
                .perform();

        Thread.sleep(5000);

        take_screenshot(driver);

        //Test Ends
        driver.getContextHandles();
        driver.quit();

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...