首页 > 解决方案 > 如何使用 Appium 与智能手机模拟器交互?

问题描述

我正在使用以下代码尝试在 iPhone 屏幕(和 Android,但现在专注于 iOS)上向左滑动,特别是一个应用程序,但我无法让手机向左滑动。

代码的意图:

下面的代码应该在应用程序打开时向左滑动屏幕,并在每次滑动后截取屏幕截图。

实际发生的情况:

屏幕根本没有交互,并且一直卡住。

如果这里的任何人都可以断定下面的代码适用于他们,那么我可能不得不尝试不同的 .ipa 文件。

我从以下GIST获得了以下代码

我尝试了什么:

  1. 我试过换手机和操作系统

    caps.setCapability("设备", "iPhone 8 Plus"); caps.setCapability("os_version", "11");

没运气。

  1. 我还尝试更改 X 和 Y 坐标以查看是否可以解决问题,但无论 X 和 Y 更改,屏幕显示没有效果。

  2. 我怀疑我没有使用正确的导入。使用下面的代码,未使用以下导入。很可能是因为 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();

    }

标签: javaandroidmavenseleniumappium-ios

解决方案


推荐阅读