robotframework:appium切换webview后,在第一个页面操作成功,跳转到第二个页面后,执行命令失败
问题:
在用robot写手机淘宝app的自动化时,打开手机淘宝后,点击天猫国际,跳转到天猫国际页面,天猫国际页面是H5,
需要切换到对应的webview,切换到webview后,点击美妆菜单,跳转到美妆页面,美妆页面也是H5,
与天猫国际页面的webview一样,此时点击美妆页面的元素,提示找不到元素,用get source获取美妆页面源码,
获取到的源码是第一个天猫国际页面的源码,所以在美妆页面执行操作找不到元素。
解决:
在天猫国际页面点击美妆菜单后,先切换回NATIVE_APP,再重新切换回对应的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=\"天猫国际\"] Click Element xpath=//android.widget.TextView[@text=\"天猫国际\"] @{contexts} Get Contexts Log Many @{contexts} ${cur_context} Get Current Context log 当前context log ${cur_context} log 开始切换 Switch To Context WEBVIEW_com.taobao.taobao log 切换成功 ${cur_context} Get Current Context log ${cur_context} Page Should Contain Text 美妆 Click Element xpath=//*[@id="J_5132393350"]/div/div/div/a[2] Page Should Contain Text 明星面膜 @{contexts1} Get Contexts Log Many @{contexts1} ${cur_context1} Get Current Context log 当前context log ${cur_context1} Switch To Context NATIVE_APP Switch To Context WEBVIEW_com.taobao.taobao ${page} Get Source log ${page} Click Element xpath=//*[@id="J_1456082907"]/div/div/div[1]/a[1]/div[1]/img sleep 2 Scroll Down xpath=//*[@id="J_2195168767"]/div/div[2]/a/div[1]/img[1] sleep 5 [Teardown] Close All Applications *** Keywords ***
示例图: