我想使用appium自动化混合应用程序。 我的应用程序使用touchend事件而不是div的click事件 如何在appium中自动执行此touchend事件?
对于简单点击,我可以找到一个元素,然后只需执行WebElement.click();
如何为touchend发起事件?
答案 0 :(得分:0)
你看过文档吗?
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/touch-actions.md
答案 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);
}