robotframework+appium中使用swipe报错Method has not yet been implemented,求解

手势密码在很多应用都会运到,手势密码都要求至少连接4个点,但AppiumLibrary并没有提供对应的关键字,本人尝试连续使用Swipe关键字两次解决该问题,为什么要用两次呢?因为Swipe的参数只是起点和终点,如果直接给出手势密码的起点和终点,则会忽略中间的点,连续使用两次Swipe关键字在Android中偶尔可以成功,但在iOS中则没有一次成功过,为了彻底解决该问题,本人仔细看了Appium的文档,终于所有发现,请看来自于的如下截图:


从中我得知手势密码的问题一定可以解决。

由于AppiumLibrary没有提供手势密码关键字,那就自己写一个Library。但是该尝试失败了,主要是由于Appium执行中需要很多上下文参数,而自己写的Library如何与AppiumLibrary交互是个问题,也许可以解决,但可能会比较麻烦。

转变下观念,干脆曲线救国吧。

既然安装了AppiumLibrary,并且它是开源的,直接去修改其源代码不就搞掂了吗?

该方法的参数platform用于传入平台,取值为iOS或者Android,这里有两个关键的知识点:

1.press方法中的坐标为绝对坐标,move_to方法中的坐标都是相对坐标,具体来说第一个move_to中的坐标相对于press方法中的坐标,第二个move_to方法中的坐标相对于第一个move_to方法中的坐标。

2.wait是必须的:开始我没有用wait,结果效果是划动太快,直接从第一个点到了最后一个点,略过了中间的点,加上wait之后就正常了。这里ms表示为毫秒,ms=500就是等待500毫秒。

可能有些人会问为什么把坐标点写死了,不做为参数传递进来呢?

其实我一开始也是把坐标作为参数,共用了三组坐标分别表示起点,中间的点和终点坐标,但执行时总是报错,也一直找不到原因,后来想到其实手势密码是不变的,干脆写成硬编码,如果坐标变化了,那就直接改这个文件即可,反正Python是解释型的语言,用到的时候会自动编译,也省去了编译的麻烦,也是很方便的。

1.如何写一个Library来提供手势密码

2.如何把坐标作为参数传递进来

也请朋友分享下你们的解决方案,欢迎互动讨论。


}

鉴于整个环境配置方面有不少坑,所以总结一下。

注意:国内很多博客文章用的Robotframework还都是基于Python2的版本,原因是界面化工具RIDE只支持python2,但是Robotframework的官方nokia公司早就推出了支持Python3的图形界面编辑工具RED,强烈推荐,谁用谁知道!下载链接:
使用方面请尽量参考官方的文档,网上的各种博客写的都不如官网清楚,看不懂英文的请使用网页翻译工具。

    教程很多,自己搜。我装的是1.8版本 注:虽然理论上来说不需要装整个Android Studio,只需要装相关的开发工具就好了,但是为了懒省事,还是建议装上它。因为我一开始就只是下载的开发工具,但没下载全,所以折腾了老半天。

shell打开的时候载入的。
建议配置在用户级别的环境变量~/.bash_profile中。

根据你自己机器上JAVA和Android tools的目录,设置环境变量。
给出我的配置作为参考,你的不一定和我的完全一样。

看来环境变量都设置好了。

但是这时候运行adb devices查看链接的移动设备,如果是使用模拟器会发现列表中没有模拟器的设备信息,以本人使用的夜神模拟器为例,运行如下命令即可:

  1. 先到模拟器中打开开发者模式( 夜神模拟器:设置->关于平板电脑->点击5次版本号 进入开发者模式 )
  2. 右键点击夜神模拟器的app,选择显示包内容,进入到MacOS文件夹中,cmd + option + c 复制文件夹路径。
    命令行cd到MacOS文件夹下,但是这个路径中可能含有空格,此时要你自己添加上转义符才能cd成功。之后,运行命令

现在再运行adb devices命令就能看到设备信息了。

  1. 打开Appium,点击齿轮一样的设置按钮,这样设置:
  1. 安卓版本选择模拟器对应的安卓版本。例如我的夜神模拟器是4.4版本,就选中它。

  1. 打开这个项目下的red.xml文件,点击General。一般情况下它会自动识别Robotframework,如图所示:



    进入文件的Source模式,输入:

注意,此时你的Library AppiumLibrary可能是红色波浪线,说明这个库没有被引入。你可以鼠标移到上面,Ctrl + 1引入。


  1. 很简单,只要在用例所在的robot文件上,点击左上角的绿色三角形按钮即可。
    此时你看到appium的窗口闪现一些文字,用例运行起来了,然后在RED界面的Console上可以看到运行结果:


}
  • 腾讯云容器服务(Tencent Kubernetes Engine ,TKE)基于原生kubernetes提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼容原生 kubernetes API ,扩展了腾讯云的云硬盘、负载均衡等 kubernetes 插件,为容器化的应用提供高效部署、资源调度、服务发现和动态伸缩等一系列完整功能,解决用户开发、测试及运维过程的环境一致性问题,提高了大规模容器集群管理的便捷性,帮助用户降低成本,提高效率。容器服务提供免费使用,涉及的其他云产品另外单独计费。

}

我要回帖

更多关于 robotframework断言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信