Android开发程序员Android知识

微信公众号webview测试

2018-07-03  本文已影响72人  迈阿密小白

前提条件

进行微信webview相关测试,需要准备:

打开微信调试功能

申明: 这个操作主要参考 文章 ,写的不详细的地方,可以参考原文章

简单Demo

大致操作步骤:

# coding=utf-8
# author='Shichao-Dong'
# create time: 2018/7/3 

from appium import webdriver
import time
desired_caps = {
                'platformName': 'Android',
                'platformVersion': '7.0',
                'deviceName': 'WTKGY17811000030',
                'appPackage': 'com.tencent.mm',
                'appActivity': '.ui.LauncherUI',
                'unicodeKeyboard': True,
                'resetKeyboard': True,
                'noReset': True,
                'chromedriverExecutableDir':"D://chromedriver//2.20",
                'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
                }

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(10)
driver.save_screenshot('D://code//test/demo.png')
#进入订阅号
driver.find_elements_by_id("com.tencent.mm:id/apv")[3].click()
driver.find_elements_by_id("com.tencent.mm:id/apv")[0].click()
driver.find_elements_by_id("com.tencent.mm:id/aaq")[0].click()
driver.find_elements_by_class_name("android.widget.TextView")[0].click()
time.sleep(3)
#切换webview
print(driver.contexts)
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
time.sleep(2)
handles = driver.window_handles
print len(handles)

try:
    driver.switch_to_window(handles[1])
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="namespace_1"]/div[2]/div[1]/a[1]').click()
    time.sleep(2)
    print('定位成功')
except Exception :
    print('切换之下一个handle')

print('开始截图')
driver.switch_to.context('NATIVE_APP')
driver.save_screenshot('D://code//test/lihai.png')
print('截图成功')
driver.find_element_by_id('com.tencent.mm:id/i2').click()
time.sleep(1)
driver.find_element_by_id('com.tencent.mm:id/hm').click()
driver.save_screenshot('D://code//test/dingyue.png')
driver.quit()

更多Demo可见我的Github

几个坑

1.chrome和chromedriver版本要对应好

根据chrome://inspect 上显示的chrome,下载对应的chromedriver
chromedriver下载地址
对应关系,请自行搜索
如上图,我的chrome版本为:53.0.2785.49
对应的chromedriver为 2.26
但是我chromedriver切换为2.26之后,报错

Original error: session not created exception: please close '' and try again

最终解决方案:将版本,将chromedriver版本将为2.20

解决方案,参考这篇文章

2.增加的参数说明

可以看到desired_caps中增加两个参数:

3.切换webview之后无法定位元素

原因是进入webview后会存在多个handle,通过switch_to_window进行handle切换,然后进行元素定位

try:
    driver.switch_to_window(handles[1])
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="namespace_1"]/div[2]/div[1]/a[1]').click()
    time.sleep(2)
    print('定位成功')
except Exception :
    print('切换之下一个handle')

以上所有,欢迎交流学习,批评指正。

上一篇下一篇

猜你喜欢

热点阅读