java - 如何使用 Appium 与智能手机模拟器交互?
问题描述
我正在使用以下代码尝试在 iPhone 屏幕(和 Android,但现在专注于 iOS)上向左滑动,特别是一个应用程序,但我无法让手机向左滑动。
代码的意图:
下面的代码应该在应用程序打开时向左滑动屏幕,并在每次滑动后截取屏幕截图。
实际发生的情况:
屏幕根本没有交互,并且一直卡住。
如果这里的任何人都可以断定下面的代码适用于他们,那么我可能不得不尝试不同的 .ipa 文件。
我从以下GIST获得了以下代码
我尝试了什么:
我试过换手机和操作系统
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();
}
解决方案
推荐阅读
- python - 无法使用 Beautiful Soup 抓取网站
- c# - 使用 128 位块和 256 位密钥实现 AES-GCM
- php - PHP zipArchive::setPassword 无法正常工作
- c++ - 将自定义可绘制对象存储在数组中会导致绘制它们时出现分段错误
- firebase - 离子运行时错误 - 区域已加载
- amazon-web-services - 列出今天创建的自动 RDS 快照并使用 boto3 复制到其他区域
- html - 动画切换固定顶部导航栏
- r - 将 ggplot/manipulate 图转换为 plotly 或 js 脚本图
- php - 将类添加到当前的 Wordpress 帖子标题
- python - django 数据集的转换