切换到webview

1.获取handle,方式如下

        Set contexts = driver.getContextHandles();
        for (Object context : contexts) {
            System.out.println((String) context);
        }

控制台会输出以下信息,一般webview命名方式都为WEBVIEW_开头,后面是包名

NATIVE_APP
WEBVIEW_com.xxx.xxx.xxx

2.在第一步已经获取handle,通过以下方法可以切换到webview页面

    /**
     * 在webview与native切换handle
     * @param handle 切换NATIVE和WEBVIEW
     */
    public void switchToWebview(String handle){
        Set contexts = driver.getContextHandles();
        try {
            for (Object context : contexts) {
                System.out.println((String) context);
                if (handle.contains((String) context)){
                    driver.context(handle);
                }
            }
            logger.info("切换到了: " + handle + "\n");
        }catch (NoSuchContextException e){
            logger.error("没有这个context:" + handle, e + "\n");
            Assert.fail("没有这个context:" + handle, e);
        }

实际结果如下:

NATIVE_APP
WEBVIEW_com.xxx.xxx
[INFO ] 2019-05-22 12:36:59,015 method:com.xxx.xxx.common.AppiumApi.changeToWebview(AppiumCommonApi.java:69)
切换到了: WEBVIEW_com.xxx.xxx

[INFO ] 2019-05-22 12:36:59,016 method:com.xxx.xxx.controller.Text.click(Text.java:44)
点击操作
[INFO ] 2019-05-22 12:36:59,016 method:com.xxx.xxx.controller.AbstractControl.getValidElement(AbstractControl.java:242)
查找元素[xxx:【确认】] → 定位方式[By.xpath: /html/body/div[66]/span/div/div/div[3]/div[2]]
[INFO ] 2019-05-22 12:36:59,643 method:com.xxx.xxx.controller.Text.click(Text.java:44)
点击操作

3.chrome版本需要保持一致,如果不一致可能会导致报错,信息在appium日志中有体现,解决方法是升级客户端chromedriver或者下载对应的chromedriver,版本与下载地址:Chromedriver/Chrome compatibility。如果下载的 是对应的,需要更改mac下的默认chromedriver,或者,启动appium时指定

appium --chromedriver-executable /Users/mc/software/chrome/2.34/chromedriver


我的路径如下:

MC:_appium-chromedriver@4.7.0@appium-chromedriver Smarter$ pwd
/usr/local/lib/node_modules/appium/node_modules/_appium-chromedriver@4.7.0@appium-chromedriver

4.除了版本还需要配置

capabilities.SetCapability("browserName", "Chrome");

ChromeOptions options  = new ChromeOptions();
options.AddAdditionalCapability("androidProcess", "com.xxx");
capabilities.SetCapability(ChromeOptions.Capability, options);

参考:微信 webview 的自动化技术 · TesterHome

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值