robotframework:appium切换webview后,在webview里滑动屏幕
问题:
在用robot写手机淘宝app的自动化时,打开手机淘宝后,点击天猫国际,跳转到天猫国际页面,天猫国际页面是H5,
需要切换到对应的webview,切换到webview后,点击美妆菜单,跳转到美妆页面,美妆页面也是H5,
与天猫国际页面的webview一样,如果需要在webview里滑动页面,例如向下滑动到某个元素出现在屏幕上,直接在webview中使用swipe是不行的,
因为swipe只能在NATIVE_APP中滑动,不能在webview中执行。
解决:
在美妆页面中后,先切换回NATIVE_APP,执行swipe滑动到指定元素,滑动完后,再重新切换回对应的webview。
代码示例:
*** Settings ***
Suite Setup
Suite Teardown
Library AppiumLibrary *** Variables *** *** Test Cases ***
手机淘宝
Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=19 deviceName=127.0.0.1:21503 app=${CURDIR}${/}shoujitaobao_178.apk appPackage=com.taobao.taobao
... appActivity=com.taobao.tao.welcome.Welcome unicodeKeyboard=True resetKeyboard=True
Wait Until Page Contains Element xpath=//android.widget.TextView[@text=\"天猫国际\"] #等待手机淘宝打开完成
${width} Get Window Width
${height} Get Window Height
${x1}= Evaluate int(${width} * 0.5)
${y1}= Evaluate int(${height} * 0.75)
${y2}= Evaluate int(${height} * 0.25)
Click Element xpath=//android.widget.TextView[@text=\"天猫国际\"] #点击天猫国际
@{contexts} Get Contexts #获取contexts
Log Many @{contexts} #打印contexts
${cur_context} Get Current Context #获取当前contexts
log 当前context
log ${cur_context} #打印当前contexts
log 开始切换
Switch To Context WEBVIEW_com.taobao.taobao #切换contexts
log 切换成功
${cur_context} Get Current Context
log ${cur_context}
Page Should Contain Text 美妆
Click Element xpath=//*[@id="J_5132393350"]/div/div/div/a[2] #点击美妆菜单
Switch To Context NATIVE_APP
Switch To Context WEBVIEW_com.taobao.taobao
Page Should Contain Text 明星面膜
${cur_context_1} Get Current Context #获取当前contexts
log 当前context
log ${cur_context_1} #打印当前contexts
Comment ${page} Get Source
Comment log ${page}
Comment Click Element xpath=//*[@id="J_1456082907"]/div/div/div[1]/a[1]/div[1]/img
Switch To Context NATIVE_APP
Swipe ${x1} ${y1} ${x1} ${y2} 1000
sleep 5
Swipe ${x1} ${y1} ${x1} ${y2} 1000
sleep 5
[Teardown] Close All Applications 手机淘宝滑动
Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=19 deviceName=127.0.0.1:21503 app=${CURDIR}${/}shoujitaobao_178.apk appPackage=com.taobao.taobao
... appActivity=com.taobao.tao.welcome.Welcome unicodeKeyboard=True resetKeyboard=True
Wait Until Page Contains Element xpath=//android.widget.TextView[@text=\"天猫国际\"] #等待手机淘宝打开完成
${width} Get Window Width
${height} Get Window Height
${x1}= Evaluate int(${width} * 0.5)
${y1}= Evaluate int(${height} * 0.75)
${y2}= Evaluate int(${height} * 0.25)
Swipe ${x1} ${y1} ${x1} ${y2} 1000
sleep 5
[Teardown] Close All Applications *** Keywords ***
截图:


robotframework:appium切换webview后,在webview里滑动屏幕的更多相关文章
- robotframework:appium切换webview后,在第一个页面操作成功,跳转到第二个页面后,执行命令失败
问题: 在用robot写手机淘宝app的自动化时,打开手机淘宝后,点击天猫国际,跳转到天猫国际页面,天猫国际页面是H5, 需要切换到对应的webview,切换到webview后,点击美妆菜单,跳转到美 ...
- Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题
如何切换webview进入小程序请参考https://testerhome.com/topics/12003 脚本思路:进入webview后会存在多个handle同Web页签一样,获取所有的handl ...
- Appium解决native+webview混合型APP(公众号、小程序)切换webview后元素无法定位问题
问题:最近在做一个安卓+H5混合开发的APP自动化测试,发现在从native切换到webview后,元素仍然无法找到,报错:no such element 思路:于是思考webview会不会像web页 ...
- Appium切换webview时候报chromedriver版本问题
前言 用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chrome version must b ...
- appium+python自动化41-切换webview时候报chromedriver版本问题
前言 用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chrome version must b ...
- Appium对京东App中WebView的处理
Appium用uiautomator无法对WebView进行className定位,所以只能模拟动作.可以用android sdk自带的monitor工具,先进行截图,再用任意图像处理软件,获取截图的 ...
- 与webView进行交互,webView小记
本文转载至 http://www.verydemo.com/demo_c101_i46895.html 一.与webView进行交互,调用web页面中的需要传参的函数时,参数需要带单引号,或者双引号( ...
- Android WebView Memory Leak WebView内存泄漏
在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用 ...
- 安卓android WebView Memory Leak WebView内存泄漏
Android WebView Memory Leak WebView内存泄漏 在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面 ...
随机推荐
- Java Enum枚举的用法(转)
说明:Java的枚举比dotnet的枚举好用,至少支持的方式有很多. 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以 ...
- 深入GCD(一): 基本概念和Dispatch Queue
什么是GCD?Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程 ...
- iOS的应用程序实现之间的内容分享
前言 我们在iOS的平台上想要实现不同应用之间的内容分享一般有几种常用方式: 一种第的英文通过AirDrop实现不同设备的应用之间文档和数据的分享; 第二种是给每个应用程序定义一个URL方案,通过访问 ...
- OSX: diskutil命令-转换成自由空间并再对其分区
声明:本文涉及的操作非常可能会破坏你的系统文件,造成数据丢失.请谨慎模仿,一切后果作者均不承担不论什么责任. 目的: 尽管说比較熟悉diskutil命令和它的GUI前端程序磁盘工具(Disk Util ...
- Service Mesh vs SideCar
Istio = 微服务框架 + 服务治理 Istio 大幅降低微服务架构下应用程序的开发难度,势必极大的推动微服务的普及.个人乐观估计,随着isito的成熟,微服务开发领域将迎来一次颠覆性的变革.后面 ...
- HDU 2601An easy problem-素数的运用,暴力求解
id=17433" target="_blank" style="color:blue; text-decoration:none">An ea ...
- Java网络编程知识点(1)
怎样将一个String对象转换成InputStream对象? ByteArrayInputStream inputStream = new ByteArrayInputStream(str.getBy ...
- crontab -e 定时任务中的 脚本文件 路径
crontab -l 57 */1 * * * python /home/data/crontab_chk_url/personas/trunk/plugins/spider/chk_url_stat ...
- DOM操作三
1.以一个对象的x和y属性的方式返回滚动条的偏移量 function getScrollOffsets(w){ //使用指定的窗口,如果不带参数则使用当前窗口 w= w || window; //除了 ...
- C++设计模式之State模式
这里有两个例子: 1.https://www.cnblogs.com/wanggary/archive/2011/04/21/2024117.html 2.https://www.cnblogs.co ...