appium:webview:selenium:如何在div上自动化touchend事件?

时间:2015-04-14 13:33:19

标签: java eclipse selenium automation appium

我想使用appium自动化混合应用程序。 我的应用程序使用touchend事件而不是div的click事件 如何在appium中自动执行此touchend事件?

对于简单点击,我可以找到一个元素,然后只需执行WebElement.click();

即可执行点击

如何为touchend发起事件?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

过去几天我一直在研究这个问题。最后,我发现Appium touch操作仅适用于 NATIVE 上下文。但是,在测试/自动化Web应用程序时,您处于 WEBVIEW 上下文中。因此,您必须切换到NATIVE,执行触摸操作,然后切换回来。

好的,这听起来不错。但他们不能让它那么简单。因此,您无法在Touch Actions中将Selenium WebElement用作参数。您将需要使用NATIVE上下文重新找到它,或使用元素位置和尺寸来计算触摸位置并使用它。但是,NATIVE上下文中的X和Y坐标与WEBVIEW上下文中的坐标不同。因此,如果你需要它们是准确的,那么你必须翻译它们。

嗯,至少那是我现在的位置。也许其他人可以提供更多或更好的细节。

以下是 tap 的一些示例代码,它忽略了像素转换问题。我只在iOS上测试了它,但它也适用于Android。

private void tapElement(AppiumDriver appiumDriver, WebElement element) {
   // Locate center of element
   Point location = element.getLocation();
   Dimension size = element.getSize();
   int tapX = location.getX() + (size.getWidth() / 2);
   int tapY = location.getY() + (size.getHeight() / 2);

   // Execute tap
   String originalContext = appiumDriver.getContext();
   appiumDriver.context("NATIVE_APP");
   TouchAction action = new TouchAction(appiumDriver);
   action.tap(tapX, tapY).perform();
   appiumDriver.context(originalContext);
}