一尘不染

如何在RemoteWebDriver中使用Selenium TouchActions

selenium

我用touchstartand
touchmove事件编写了一些Javascript代码。我想用selenium测试。我刚刚发现了TouchActions类,该类move似乎正是我想要的方法。

我的测试是通过RemoteWebDriver运行的:

RemoteWebDriver remoteWebDriver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

驱动程序将是a ChromeDriver或最终将是a FirefoxDriver,而不是a AndroidDriver

当我尝试使用以下方法初始化动作时:

TouchActions builder = new TouchActions(remoteWebDriver);

我收到强制转换错误:

java.lang.ClassCastException:org.openqa.selenium.remote.RemoteWebDriver无法转换为org.openqa.selenium.interactions.HasTouchScreen

有人知道我应该做什么吗?我需要添加一项功能吗?


阅读 524

收藏
2020-06-26

共1个答案

一尘不染

因此,要做到这一点,首先需要将移动功能添加到驱动程序中(请参阅Mobile
Emulation
):

Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "Galaxy S5"); // Choose a device available in your version of chromimum
Map<String, Object> options = new HashMap<>();
options.put("mobileEmulation", mobileEmulation);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
RemoteWebDriver remoteWebDriver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

然后,当您需要触摸操作时,就需要“增强”驱动程序,以便对其进行投射:

TouchActions builder = new TouchActions(new Augmenter().augment(remoteWebDriver));

然后,您可以从该构建器执行所需的builder.down(), move(), scroll(), up()...任何操作。

2020-06-26