公司的 App 是 Hybrid 混合应用,95% 页面由 html5 实现,webview 没有使用原生的 webview,是使用的名字叫 crosswalk 的 webview。我现在的问题是在 html5 页面打印 webview 打印出来只有 NATIVE_APP,无法切换到 webview。

开发在代码里面有加 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true);}
可以在谷歌浏览器里面输入 chrome://inspect/#devices 进行调试,但是在在 Appium 打印出来就只有 NATIVE_APP
联系了 Android 开发,他也不懂 Appium,根据我给他的信息他搜索了一下,找到一篇帖子(链接如下):
https://github.com/appium/appium/issues/4597#issuecomment-164540456
里面说要改 android-hybrid.js 这个文件。我找到这个文件之后做了如下修改 (标识部分为修改区域):

修改之后打印出来 webview 还是 NATIVE_APP,请教一下是什么原因?

调试代码如下:


# -*- coding:utf-8 -*- 
import os
import unittest
from appium import webdriver
from time import sleep

desird_caps={}
desird_caps['platformName'] = 'Android'
desird_caps['deviceName'] = '76P4C15909025320'
desird_caps['udid'] = '76P4C15909025320'
desird_caps['appPackage'] = 'com.my.shop'
desird_caps['appActivity'] = 'com.my.shop.activity.SplashActivity'
desird_caps['platformVersion'] = '5.1.1'
desird_caps['automationName'] = 'crosswalk'
driver = webdriver.Remote('http://localhost:4723/wd/hub',desird_caps)

def webview():
    contexts=driver.contexts
    for cotext in contexts:
        print cotext

def login():
    driver.find_element_by_id('com.my.shop:id/tv_login').click()
    driver.find_element_by_id('com.my.shop:id/et_phone_number').send_keys(180****5829)
    driver.find_element_by_id('com.my.shop:id/et_password').send_keys(123456)
    driver.find_element_by_id('com.my.shop:id/tv_login').click()
    sleep(5)

def entershop():
    driver.find_elements_by_class_name('android.view.View')[6].click()

sleep(5)
login()
entershop()
webview()


↙↙↙阅读原文可查看相关链接,并与作者交流