公司的 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()