python 自动化微信小程序_【Appium + Python + WebviewH5】之微信小程序自动化测试

进行调试,打开X5:

http://debugmm.qq.com/?forcex5=true

http://debugx5.qq.com

http://debugtbs.qq.com

一般前两个就可以了。

微信打开:http://debugx5.qq.com,打开页面,按图中勾选。

1040075-20191126100853332-1041918958.png

=====================================================

然后再谷歌浏览器输入:chrome://inspect/devices#devices,

打开页面可能会报:

提示Pending authentication:please accept debugging session on the device

手机的开发者模式关掉再打开(我是用的这个方法,因为WEB自动化测试谷歌浏览器轻易我不升级)

=====================================================

但是上面这块会发现点击【inspect】会出现404或者空白页面

1040075-20191127112105960-146605742.png

1040075-20191127112149007-1055969697.png

解决办法:除非翻墙或者用Webview离线包(淘宝买的定制包,只能自己使用)

1040075-20191126172017283-1450868891.png

用的这个程序,导入定制包就可以了

1040075-20191126172231190-2115246647.png

========================================================

后来发现查看小程序页面还有另一种办法:

1040075-20191128094734207-2064845569.png

右下角多了一个调试工具

1040075-20191128094843786-1509737634.png

点击获取页面上的元素

1040075-20191128095008331-1077713321.png

可以定位到【我要登录】按钮的页面元素:

1040075-20191128095322050-1681119664.png

输入下面,查看小程序信息:

adb shell dumpsys activity top |grep ACTIVITY

adb shell ps4527

查看小程序运行在哪里:

1040075-20191126140058141-2114804181.png

com.tencent.mm:appbrand0,是必须要的。

from appium importwebdriverfrom time importsleep

desired_caps={'platformName': 'Android','fastReset': 'false','noReset': True,'platformVersion': '9','deviceName': 'b938d4a4','appPackage': 'com.tencent.mm','appActivity': '.ui.LauncherUI','fullReset': 'false',#'unicodeKeyboard': 'True',

#'resetKeyboard': 'True',

'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'(在这里用到)}

}

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

sleep(5)

driver.find_element_by_android_uiautomator('text("微信")').click() #点击微信Tab

#定义一个滑动屏幕的方法

defswipeDown(t):

x= driver.get_window_size()['width']

y= driver.get_window_size()['height']

x1= int(x * 0.5) #x坐标

y1 = int(y * 0.25) #起始y坐标

y2 = int(y * (0.25 + t)) #终点y坐标

driver.swipe(x1, y1, x1, y2, 500)

swipeDown(0.4) #向下滑动屏幕的40%,准备从顶部进入小程序

sleep(2)

driver.find_element_by_android_uiautomator('text("xxx")').click() #点击顶部的图标进入小程序

sleep(5)print(driver.contexts)

driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')

sleep(5)driver.find_element_by_css_selector(".footer2").click()

但是运行后报错:

1040075-20191126140401608-1744009433.png

提示当前Chromedriver版本过高2.45对应版本为70的Chrome

输入网址,查看Chromedriver与webview版本对应关系:

1040075-20191126142612189-1100278630.png

我的chrome=66.0.3359.126,所以下载2.39版本的Chromedriver

经查询appium日志(下图)的Chromedriver路径为:

/Users/zhangc/.nvm/versions/node/v10.15.0/lib/node_modules/appium/node_modules/_appium-chromedriver@4.10.1@appium-chromedriver/chromedriver/mac/

把下载的替换就可以了。

1040075-20191126142440631-157851765.png

但是还是报错:定位不到元素

经过大神的文章得知,必须要进入handles

需要加上下面的代码:

handles =driver.window_handlesprint(handles)print(driver.current_window_handle)

driver.switch_to_window(handles[1])

完整代码如下:

from appium importwebdriverfrom time importsleep

desired_caps={'platformName': 'Android','fastReset': 'false','noReset': True,'platformVersion': '9','deviceName': 'b938d4a4','appPackage': 'com.tencent.mm','appActivity': '.ui.LauncherUI','fullReset': 'false',#'unicodeKeyboard': 'True',

#'resetKeyboard': 'True',

'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}

}

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

sleep(5)

driver.find_element_by_android_uiautomator('text("微信")').click() #点击微信Tab

#定义一个滑动屏幕的方法

defswipeDown(t):

x= driver.get_window_size()['width']

y= driver.get_window_size()['height']

x1= int(x * 0.5) #x坐标

y1 = int(y * 0.25) #起始y坐标

y2 = int(y * (0.25 + t)) #终点y坐标

driver.swipe(x1, y1, x1, y2, 500)

swipeDown(0.4) #向下滑动屏幕的40%,准备从顶部进入小程序

sleep(2)

driver.find_element_by_android_uiautomator('text("xxx")').click() #点击顶部的图标进入小程序

sleep(5)print(driver.contexts)

# 切换上下文

driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')

sleep(5)

handles=driver.window_handlesprint(handles)print(driver.current_window_handle)

# 切换第二个handle

driver.switch_to_window(handles[1])

# 点击登录按钮

driver.find_element_by_css_selector(".footer2").click()

成功!

附录其他参考文章:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值