Appium 求助,在微信下测试 webview 项目报如下错误,已打开 TBS 内核 Inspector 调试功能,百度过也没找到原因,倒腾几天了,麻烦知道的大神指导一下。

vic · April 07, 2017 · Last by 王乐新 replied at May 05, 2017 · Last modified by admin 恒温 · 1484 hits

脚本如下:


from appium import webdriver
import time

packageName='com.tencent.mm'
appActivity='.ui.LauncherUI'

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'ZX1G2293B6'
desired_caps['appPackage'] = packageName
desired_caps['appActivity'] = appActivity
desired_caps['fullReset'] = 'false'
desired_caps['unicodeKeyboard'] = 'True'
desired_caps['resetKeyboard'] = 'True'
desired_caps['fastReset'] = 'false'

desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:tools'}

driver = webdriver.Remote('http://127.0.1.1:4723/wd/hub', desired_caps)

#driver.implicitly_wait(30)
driver.find_element_by_name('我').click()
print (driver.current_context)
driver.find_element_by_name('相册').click()

driver.find_element_by_xpath("//*[contains(@text,'炒股难就用股先生,【Vic66】邀请您一起使用股先生。')]").click()
print (driver.current_context)
driver.find_element_by_xpath("//*[contains(@text,'炒股难就用股先生,【Vic66】邀请您一起使用股先生。')]").click()
print (driver.current_context)
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
print (driver.current_context)
print (切换ok)
time.sleep(10)
print (driver.page_source)
#点击菜单
driver.find_element_by_id("showMenuIocn").click()
print (driver.current_context)
#点击登录
driver.find_element_by_css_selector("button.login").click()
print (driver.current_context)
driver.find_element_by_css_selector("input.mui-input-clear").clear()
print (driver.current_context)
driver.find_element_by_css_selector("input.mui-input-clear").send_keys("18681378808")
print (driver.current_context)
driver.find_element_by_css_selector("div.mui-input-row.password > input.mui-input-clear").clear()
print (driver.current_context)
driver.find_element_by_css_selector("div.mui-input-row.password > input.mui-input-clear").send_keys("123456")
driver.find_element_by_css_selector("button").click()

driver.switch_to_default_content()

time.sleep(2)
driver.quit()

log日志如下:

共收到 17 条回复 时间 点赞

楼主上茶,坐等大神回复

webview的context name名称错了,你确定是你写的那个

vic #3 · April 09, 2017 作者
辣么丑 回复

大神能说得明白一点吗?你是指这个报错吗?我也找过对应原因,参考的https://testerhome.com/topics/7812这个帖子,但是还是没有解决这个问题。

确定一下Android版本,你修改了android-hybrid.js文件(针对Android 6.0+) 然后打印一下context 看看都用什么内容,修改了context应该就没有 undefined了

vic #5 · April 12, 2017 作者
太阳糖 回复

非常感谢给的思路,发现我的设备系统是6.0.1,脚本是6.0,但是改正之后又有如下错误,在百度找了些资料发现还是没有头绪,大神能帮忙看下吗?

把这句话desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:tools'}
改成desired_caps['chromeOptions']={'androidProcess' = 'com.tencent.mm:tools'}
试试
你的错误提示是不能解析chromeOptions

vic #7 · April 13, 2017 作者
太阳糖 回复

谢谢你啊,问题终于解决了,出现上面的报错主要还是chromedriver的版本问题导致的,最开始也考虑到这个问题,但换了版本依然存在,原因是我版本号和chrome版本不对应,走了不少弯路。
https://testerhome.com/topics/6954
这个帖子看了几遍,各种尝试,最终试出原因
http://www.cnblogs.com/testervic/p/6705159.html
这个贴是chromedriver的对应版本下载地址。后来人少走弯路

@test469858846 你这个对应表格 详细,我之前都是 都是从最高版往下试,大家共同学习进步

@test469858846 请问你用的微信版本是多少?对应的chromedriver呢?

vic 回复

请教下,我这边运行的代码和你差不多。但是切换到webview的时候成功了,但是后面的findelementbyxpath.click没有响应点击事件但是又没有报错,你遇到过这种情况吗

vic #11 · May 05, 2017 作者
王乐新 回复

不好意思回复晚了,没有点击你看是不是没定位上,或者换一种方式定位,webview定位可以再chrome用F12工具去看下元素,或者用最简单的 selenium ide直接录制 copy过来即可

vic #12 · May 05, 2017 作者
渐次消逝 回复

chrome版本可以再pc上用chrome浏览器的chrome://inspect/#devices工具来查看对应的版本

vic 回复

定位是定位上了,用 .text 也可以拿到里面的值,怀疑可能H5开发调用的别的点击方法导致的。我用另外一种方法已经解决了。
如果时间比较富余,求指点一下https://testerhome.com/topics/8520

vic #14 · May 05, 2017 作者
王乐新 回复

指点谈不上,互相学习,你确定下你的微信下已打开 TBS 内核 Inspector 调试功能了吗?

vic 回复

是的,不然脚本也运行不了。现在用的坐标元素点击然后用if else来判断是否点击到元素上了

vic #16 · May 05, 2017 作者
王乐新 回复

很无奈,我也爱莫能助了,有解决方式了可以@我一下,学习学习

vic 回复

有另外一种解决方式,不过感觉很low。我发了一篇帖子,纯新手想求指点一下。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up