gpt4 book ai didi

java - 如何将滑动更改为 TouchAction() 方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:46 26 4
gpt4 key购买 nike

我在尝试使用滑动时遇到了错误,但它似乎已经过时了。建议使用 TouchAction(),但我不确定如何将滑动转换为 TouchAction()

代码如下:

public void obj_scrollToObjectByCoOrds(int coOrds) throws IOException {
try {

List<WebElement> elements = driver.findElements(By.className("android.widget.FrameLayout"));
Point point = elements.get(1).getLocation();
Dimension size = elements.get(1).getSize();

int elementCenterX = point.getX() + Math.round(size.getWidth() / 2);
int elementCenterY = point.getY() + Math.round(size.getHeight() / 2);

String originalContext = driver.getContext();
driver.context("NATIVE_APP");

driver.swipe(elementCenterX, elementCenterY, elementCenterX, elementCenterY + coOrds, 1500);
driver.context(originalContext);




} catch (Exception e) {
e.printStackTrace();
}

}

下面是一个 touchAction 示例,我很难实现它,所以我暂时将它留作示例。我想看看转换是如何发生的,所以我通过将下面的代码与答案进行比较来理解:

Dimension screenSize = driver.manage().window().getSize();
new TouchAction(driver)
.press((int) (screenSize.width * 0.6), 130)
.waitAction(500)
.press((int) (screenSize.width * 0.3), 130)
.release()
.perform();

最佳答案

我举了另一个例子来帮助你理解我在 android 应用程序中从左向右滑动,希望你能理解..

package Android;

import io.appium.java_client.MobileDriver;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class SwipeAction {
AndroidDriver driver;
Dimension size;
WebDriverWait wait;
@BeforeTest
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "ZX1B32FFXF");
capabilities.setCapability("browserName", "Android");
capabilities.setCapability("platformVersion", "4.4.2");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.fortysevendeg.android.swipelistview");
capabilities.setCapability("appActivity","com.fortysevendeg.android.swipelistview.sample.activities.SwipeListViewExampleActivity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
wait = new WebDriverWait(driver, 300);
wait.until(ExpectedConditions.elementToBeClickable(By.className("android.widget.RelativeLayout")));
}


@Test
public void swipingHorizontal() throws InterruptedException {
//Get the size of screen.
size = driver.manage().window().getSize();
System.out.println(size);

//Find swipe x points from screen's with and height.
//Find x1 point which is at right side of screen.
int x1 = (int) (size.width * 0.20);
//Find x2 point which is at left side of screen.
int x2 = (int) (size.width * 0.80);

//Create object of TouchAction class.
TouchAction action = new TouchAction((MobileDriver)driver);

//Find element to swipe from right to left.
WebElement ele1 = (WebElement) driver.findElementsById("com.fortysevendeg.android.swipelistview:id/front").get(3);
//Create swipe action chain and perform horizontal(right to left) swipe.
//Here swipe to point x1 Is at left side of screen. So It will swipe element from right to left.
action.longPress(ele1).moveTo(x1,580).release().perform();

//Find element to swipe from left to right.
WebElement ele2 = (WebElement) driver.findElementsById("com.fortysevendeg.android.swipelistview:id/back").get(3);
//Create swipe action chain and perform horizontal(left to right) swipe.
//Here swipe to point x2 Is at right side of screen. So It will swipe element from left to right.
action.longPress(ele2).moveTo(x2,580).release().perform();
}

@AfterTest
public void End() {
driver.quit();
}
}

关于java - 如何将滑动更改为 TouchAction() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54573934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com