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 ***

示例图:

 

posted @ 2018-02-24 11:57  悠然现南山  阅读(743)  评论(0编辑  收藏  举报