首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用7.0.0在appium中使用上下滑动/向下滚动?

如何使用7.0.0在appium中使用上下滑动/向下滚动?
EN

Stack Overflow用户
提问于 2019-03-22 12:08:19
回答 2查看 2.6K关注 0票数 0

这是我的代码,不工作的代码和控制台发送如下: java.lang.ClassCastException:无法强制转换com.sun.proxy.$Proxy18到org.openqa.selenium.remote.RemoteWebElement

我需要滑动/向下滚动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TouchAction swipe = new TouchAction(ApplicationLauncherAndroid.driver)
.tap(element(lblImagen))// first initialElement
.waitAction(waitOptions(Duration.ofMillis(2000)))
.moveTo(element(elementoFinal)) final Element
.release();
swipe.perform();
EN

回答 2

Stack Overflow用户

发布于 2019-03-23 08:42:51

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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();
    }

似乎您导入了错误的TouchAction。从io.appium.java_client.TouchAction导入触摸操作

票数 1
EN

Stack Overflow用户

发布于 2019-03-23 12:49:27

@Pedro Perez Aballay,嗨。我建议使用以下备选方案:

(只适用于仪器化的应用程序-以及ListViews) --使用应用程序的内部API,类似于scrollIntoView在web上的工作方式,尽管它需要的工具并不能在所有类型的滚动视图\屏幕上工作

  • 备选方案B: TouchAction -例如 TouchAction touchAction = new TouchAction(driver); WebElement phone = driver.findElement(in.Repo.obj("apps.Phone")); WebElement contact = driver.findElement(in.Repo.obj("apps.Contacts")); touchAction.press(phone) .waitAction(200) .moveTo(contact) .release() .perform();
  • 选项C:client - SwipeWhileNotFound
  • 选项D: executeScript并指定要执行滑动动作

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.executeScript("client:client.swipeWhileNotFound(\"direction\", offset, time);

从屏幕边框上滑动500 of的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.executeScript("experitest:client.swipe(\"Up\", 0, 500)");

参数:

方向:进行滑动的方向(上、下、左、右)偏移:在屏幕上开始滑动时间的位置:滑动的持续时间(下=更快的滑动)

请注意

值(时间\偏移)通常是从设备屏幕大小(例如-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int offset = driver.manage().window().getSize().getHeight() / 2; // start from mid screen
int time = driver.manage().window().getSize().getHeight() * 0.3; // just an example

希望这能帮上忙

诚挚的问候,

尤金

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55307113

复制
相关文章
appium实现向上滑动,向下滑动,向左滑动,向右滑动
一.配置连接 from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' # 系统名 desired_caps['platformVersion'] = '5.1.1' # adb版本 desired_caps['deviceName'] = 'emulator-5554' # adb的名字 cmd输入adb devices可以查到 #导出模拟器中的apk,然后使用Android Ki
小小咸鱼YwY
2020/06/19
5.9K0
AngularJS 中使用Swiper制作滚动图不能滑动
Swiper是目前较为流行的移动端触摸滑动插件,因为其简单好用易上手,受到很多前端开发者的欢迎。 ---- 今天在使用Swiper的时候遇到这个问题: 使用angularjs动态循环生成swiper-slide类,在swiper-wrapper里生成6个以上的滑动页,可是就是划不到第二页,尝试将longSwipesRatio的值修改到最小,仍然不起作用。 <div class="swiper-wrapper" > <!-- =======循环部分======= --> <div cla
冷冷
2018/02/08
1.8K0
在react中使用的数字滚动组件
调用setValue就会产生动画效果。在调用setValue时可以临时传递参数,如:
挥刀北上
2021/02/25
4.3K0
在react中使用的数字滚动组件
vuejs中使用axios时如何实现滑动滚动条来动态加载列表数据
在vuejs中,我们经常使用axios来请求数据,但是有时候,我们请求的数据量很大,那么我们如何实现滑动滚动条来加载数据呢?
itclanCoder
2023/10/07
5111
vuejs中使用axios时如何实现滑动滚动条来动态加载列表数据
Appium滑动操作
在app应用日常使用过程中,会经常用到在屏幕滑动操作。如刷朋友圈上下滑操作、浏览图片左右滑动操作等。在自动化脚本该如何实现这些操作呢?
清风穆云
2021/08/09
1.1K0
[桌面版] 在 Mockplus 2.1 (预览版)中使用滚动区
3、点击滚动条两端的按钮可以扩展或收缩滚动区中的内容。在两端按钮按下的同时,按住Ctrl键,可以加速扩展或收缩。也可以直接把内容组件拖到想要放置的位置,内容会自动扩展
奔跑的小鹿
2019/01/25
8010
[桌面版] 在 Mockplus 2.1 (预览版)中使用滚动区
[桌面版] 在 Mockplus 2.1 (预览版)中使用滚动区
1、添加一个滚动区。为方便查看,可以设置一个背景色 2、双击编辑滚动区 3、点击滚动条两端的按钮可以扩展或收缩滚动区中的内容。在两端按钮按下的同时,按住Ctrl键,可以加速扩展或收缩。也可以直接把内容组件拖到想要放置的位置,内容会自动扩展 4、预览。可以使用鼠标滚轮滚动内容部分,也可以直接鼠标拖拽内容部分。按下Ctrl键,可以加速滚动内容
奔跑的小鹿
2018/03/15
7610
[桌面版] 在 Mockplus 2.1 (预览版)中使用滚动区
Python Appium 滑动、点击等
查看源码语法,起点和终点四个坐标参数。 手机屏幕从左上角开始为0,向右为x轴坐标,向下为y轴坐标。 
py3study
2020/01/17
1.2K0
ftrace在应用上的使用
之前介绍通过命令行配置和使用ftrace功能,但是实际中,我们也会希望抓C/C++程序中某段代码的调度情况。笔者前不久就遇到这种问题,某个函数调用时延概率超过100ms,是为什么?这时候就需要在他们代码中使能ftrace抓执行此函数时候,任务的调度情况。
233333
2023/10/17
2240
securecrt中使用上传下载sftp
SecureCRT这个工具自带了一个FTP,方便我们上传和下载,而且做的比较人性化,由于其基本命令和linux中基本命令大都相似,熟悉LINUX人能很容易上手。          当我们用SecureCRT连接上一台主机时,点击该工具的上 “文件”,在其下拉列表中选中“连接SFTP标签页”,结果就出现sftp>,这样我们就连接上了FTP,就可以利用该FTP进行上传和下载了。
Dlimeng
2023/06/28
1.3K0
securecrt中使用上传下载sftp
Redis在Windows下安装和PHP中使用
1、Redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
星哥玩云
2022/07/03
4090
Redis在Windows下安装和PHP中使用
Python协程中使用上下文
在Python 3.7中,asyncio 协程加入了对上下文的支持。使用上下文就可以在一些场景下隐式地传递变量,比如数据库连接session等,而不需要在所有方法调用显示地传递这些变量。使用得当的话,可以提高接口的可读性和扩展性。
py3study
2020/01/19
1.3K0
Bootstrap滚动监听不用offset实现向下偏移
Bootstrap滚动监听中文文档:http://v3.bootcss.com/javascript/#scrollspy 我就不在此赘述了。
德顺
2019/11/13
2K0
Bootstrap滚动监听不用offset实现向下偏移
Appium连续滑动操作——九宫格滑动
滑动操作一般是两点之间的滑动,而实际使用过程中用户可能要进行一些多点连续滑动操作。如九宫格滑动操作,连续拖动图片移动等场景。那么在Appium中该如何模拟这类操作呢?
清风穆云
2021/08/09
1.3K0
如何优雅地在Redis中使用Lua
今天讲一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功能。lua脚本是用C语言写的,体积很小,运行速度很快,并且每次的执行都是作为一个原子事务来执行的,我们可以在其中做很多的事情。由于篇幅很多,一次无法概述全部,这个系列可能要通过多篇文章的形式来写,好了,今天我们进入正题吧。
Bug开发工程师
2019/05/05
2.5K0
如何优雅地在Redis中使用Lua
在不被spring容器管理的类中使用ApplicationContext应用上下文bean
在我们做项目的时候,经常能遇到不被spring管理的类中要使用相关spring bean,比如自定义过滤器,静态工具类等,相应的也有几种办法,一种是想办法使不被spring容器管理的类让他被spring管理。第二种就是通过应用上下文获取通过clazz或者相关bean的name获取。第一种一般是添加相关注解即可,所以本文着重介绍一下第二种办法,并提供一个工具类。
earthchen
2020/09/24
9720
如何丝滑的在React中使用插槽
每个组件交互逻辑是一样的,但是由于用途不一样,每个组件的样式和内容区别较大,比如普通弹窗只需要放置一个关闭按钮,但是用于选择时间的弹窗除了需要确定和关闭按钮,还需要清空按钮。
Jou
2023/05/31
2.3K0
如何丝滑的在React中使用插槽
如何优雅地在JS中使用枚举定义
这种代码,后人维护根本无非理解 1,2 这种数字代表的是什么意义,导致维护困难,难于理解业务逻辑等
w候人兮猗
2020/09/16
2K0
latex之在windows环境下能够在latex中使用中文
今天要把前段时间的实验用英语先记录下来,自己就想根据原来会议的模版弄一个简易的页面(英语),突然想到之前用英文模板时是不能输入中文的,于是想着怎么在latex中输入中文,折腾了许久,终于成功了,现在分享下。
西西嘛呦
2020/08/26
1.4K0
latex之在windows环境下能够在latex中使用中文
在 vuecli 中使用 echarts
可以按需引入的模块列表见 https://github.com/apache/incubator-echarts/blob/master/index.js
4O4
2022/04/25
2420
在 vuecli 中使用 echarts

相似问题

机器人框架- Appium向下滑动/向下滚动不执行滑动/滚动操作

132

在appium java客户端7.0.0中使用协调的水平滑动

23

如何使用Python在Appium测试中滚动/滑动?

120

无法使用appium在android中向下滚动

30

如何在appium中向下滚动

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文