java - 如何在 java-client 7.0.0 中使用 appium 中的向下滑动/向下滚动?

标签 java selenium appium

这是我的代码,代码不起作用,控制台发送以下内容: java.lang.ClassCastException:无法将 com.sun.proxy.$Proxy18 转换为 org.openqa.selenium.remote.RemoteWebElement

我需要向下滑动/滚动。

TouchAction swipe = new TouchAction(ApplicationLauncherAndroid.driver)
.tap(element(lblImagen))// first initialElement
.waitAction(waitOptions(Duration.ofMillis(2000)))
.moveTo(element(elementoFinal)) final Element
.release();
swipe.perform();

最佳答案

在appium中使用以下方法进行滑动。确保您已从正确的库导入。

import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.MobileElement;
import org.openqa.selenium.Dimension;
import static io.appium.java_client.touch.WaitOptions;
import static io.appium.java_client.touch.offset.PointOption;
import static java.time.Duration.ofMillis;

//Vertical Swipe by percentages
    public void verticalSwipeByPercentages(double startPercentage, double endPercentage, double anchorPercentage) {
        Dimension size = driver.manage().window().getSize();
        int anchor = (int) (size.width * anchorPercentage);
        int startPoint = (int) (size.height * startPercentage);
        int endPoint = (int) (size.height * endPercentage);

        new TouchAction(driver)
                .press(PointOption.point(anchor, startPoint))
                .waitAction(WaitOptions.waitOptions(ofMillis(1000)))
                .moveTo(PointOption.point(anchor, endPoint))
                .release().perform();
    }

    //Swipe by elements
    public void swipeByElements (MobileElement startElement, MobileElement endElement) {
        int startX = startElement.getLocation().getX() + (startElement.getSize().getWidth() / 2);
        int startY = startElement.getLocation().getY() + (startElement.getSize().getHeight() / 2);

        int endX = endElement.getLocation().getX() + (endElement.getSize().getWidth() / 2);
        int endY = endElement.getLocation().getY() + (endElement.getSize().getHeight() / 2);

        new TouchAction(driver)
                .press(PointOption.point(startX,startY))
                .waitAction(WaitOptions.waitOptions(ofMillis(1000)))
                .moveTo(PointOption.point(endX, endY))
                .release().perform();
    }

It seems like you are importing wrong TouchAction. Import touch action from io.appium.java_client.TouchAction

关于java - 如何在 java-client 7.0.0 中使用 appium 中的向下滑动/向下滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55307113/

相关文章:

Java,if语句中的值未初始化错误,包含在while语句中

java - Spring创建相同接口(interface)的bean

c# - 如何使用 content-desc 单击按钮

java - Appium 驱动程序以编程方式获取应用程序包名称

java - 线程完成后是否释放锁?

java - 代表喜欢和不喜欢的 ImageView 不会改变颜色,Firebase 中也不会创建新节点

python - Selenium 嵌套选择器无法按预期工作

java - 我正在学习 selenium 框架,同时使用测试和 pagefactory 创建框架,我收到以下错误

java - 如何检查selenium中存储变量的值?

angularjs - 超时问题可能是 browser.sleep() 和 browser.waitForAngular 的结果吗?