Appium微信小程序自动化之开启webview调试功能方法封装

这篇具有很好参考价值的文章主要介绍了Appium微信小程序自动化之开启webview调试功能方法封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前置说明

Appium在微信小程序自动化时,需要开启微信的webview调试功能,以方便对webview的元素进行定位。

二、操作步骤

import time

from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.common.touch_action import TouchAction
from selenium.common import NoSuchElementException

from common.check_utils import CommonChecker
from common.exception import WechatMiniProgramError
from common.logger import logger
from driver.appium.webdriver.webdriver import WebDriver


class WechatMiniProgramDriver:
    """
    - 封装背景:微信从8.0.19开始将内核从x5换成了xweb
        - 需要使用 http://debugxweb.qq.com/?inspector=true 开启微信webview调试功能
        - 使用 http://debugx5.qq.com 不能再开启webview的调试功能,会报 503 错误

    - 小程序的本质:WebView
    - Appium微信小程序自动化的流程:
        - 手机开启usb调试功能, 连接至电脑
        - 开启微信 webview 调试功能
        - 微信内打开相应的小程序
        - chrome浏览器中定位小程序元素,chrome://inspect/#devices
        - 自动化操作元素
    """

    DEBUG_LINK = 'http://debugxweb.qq.com/?inspector=true'

    def __init__(self, webdriver: WebDriver):
        self.driver = webdriver

    @property
    def wrapped_driver(self):
        return self.driver

    def enable_webview_debugging(self):
        """
        如果小程序页面,可以直接定位到元素,则可以不用开启webview_debugging功能;
        如果小程序页面,不能直接定位到元素,需要使用 chrome://inspect/#devices 定位元素,则需要使用本方法开启允许调试功能。

        实现逻辑:将 'http://debugxweb.qq.com/?inspector=true' 在聊天窗口发送给自己,然后在消息窗口点击该链接即可开启webview调试功能
        """
        try:
            # 不直接使用文本定位,避免微信设置为英文时,获取不到元素
            elements = {
                '微信': ('xpath', '//android.widget.RelativeLayout[@resource-id="com.tencent.mm:id/nvt"][1]'),
                '通讯录': ('xpath', '//android.widget.RelativeLayout[@resource-id="com.tencent.mm:id/nvt"][2]'),
                '发现': ('xpath', '//android.widget.RelativeLayout[@resource-id="com.tencent.mm:id/nvt"][3]'),
                '我': ('xpath', '//android.widget.RelativeLayout[@resource-id="com.tencent.mm:id/nvt"][4]'),
            }

            # 从微信首页,点击"我"
            self.driver.find_element(*elements.get('我')).click()
            nick_name_ele = self.driver.find_element('id', 'com.tencent.mm:id/kbb')
            nick_name = nick_name_ele.text

            # 在通讯录中,搜索用户昵称
            self.driver.find_element(*elements.get('通讯录')).click()
            # 点击搜索
            self.driver.find_element('id', 'com.tencent.mm:id/jha').click()
            # 输出用户昵称
            self.driver.find_element('id', 'com.tencent.mm:id/d98').send_keys(nick_name)

            # 点击联系人
            self.driver.find_element('xpath',
                                     f'//android.widget.TextView[@text="{nick_name}"][@resource-id="com.tencent.mm:id/odf"]').click()

            # 给自己发送消息
            self.driver.find_element('id', 'com.tencent.mm:id/bkk').clear().send_keys(self.DEBUG_LINK)
            self.driver.find_element('id', 'com.tencent.mm:id/bql').click()

            # 点击链接
            self.driver.find_elements('id', 'com.tencent.mm:id/bkl')[-1].click()

            # 查找页面名称'微信,是一个生活方式'是否出现,如果出现,表示启动webview调试成功
            self.driver.find_element('id', 'com.tencent.mm:id/oct')

            # 点击X, 关闭‘微信,是一个生活方式’页面,
            self.driver.find_element('id', 'com.tencent.mm:id/actionbar_up_indicator').click()

            # 在聊天窗口,点击返回
            self.driver.find_element('id', 'com.tencent.mm:id/a4p').click()

            # 在搜索页面,点击取消
            self.driver.find_element('id', 'com.tencent.mm:id/b5i').click()

            # 回到"微信"首页
            self.driver.find_element(*elements.get('微信')).click()

            logger.info('Successfully enabled wechat webview debugging.')

        except:
            logger.error('Failed to enable wechat webview debugging.')

    def quit(self):
        return self.driver.quit()

三、Demo验证

import os.path

import pytest

from common import path
from driver.appium.support.wechat import WechatMiniProgramDriver
from driver.appium.webdriver.webdriver import WebDriver
from driver.appium.webdriver.appium_service import AppiumService


def setup_module():
    import logging
    logging.basicConfig(level=logging.DEBUG)

    # 启动 appium server
    server_manager = AppiumService()
    server_manager.start()


@pytest.fixture(scope='module')
def driver():
    appium_server_url = 'http://localhost:4723'
    apk_path = os.path.join(path.get_apk_resources_dir(), 'wechat-8.0.43.apk')
    capabilities = {
        "platformName": "Android",
        "automationName": "uiautomator2",
        "deviceName": "192.168.2.106:5555",
        "udid": "192.168.2.106:5555",
        "app": apk_path,
        # "appPackage": "com.tencent.mm",
        # "appActivity": ".ui.LauncherUI",
        "noReset": "true",
        "forceAppLaunch": "true",  # 注意:加上这个参数才能启动微信
    }
    webdriver = WebDriver(command_executor=appium_server_url, capabilities=capabilities)

    # 实例化WechatMiniProgramDriver
    driver = WechatMiniProgramDriver(webdriver)

    yield driver

    driver.quit()

def test_enable_webview_debugging(driver):
    driver.enable_webview_debugging()

运行代码之后,可以顺利打开微信,通过向自己发送消息并点击消息,开启webview调试功能:
xweb-enable-inspect,Appium,appium,微信小程序,自动化
xweb-enable-inspect,Appium,appium,微信小程序,自动化
看到这个页面后,表示启动微信webview调试功能启动生效。

欢迎技术交流:
xweb-enable-inspect,Appium,appium,微信小程序,自动化文章来源地址https://www.toymoban.com/news/detail-850210.html

到了这里,关于Appium微信小程序自动化之开启webview调试功能方法封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Appium自动化(15) - 针对 webview 进行自动化测试

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! WebView是android中一个非常重要的控件 它的作用是用来展示一个web页面

    2024年04月10日
    浏览(56)
  • 微信小程序自动化发布

    文章描述不清 有疑问可以私信 Alison-Bird 参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html 参考:https://www.npmjs.com/package/miniprogram-ci 上传文件 xx.js

    2024年02月07日
    浏览(41)
  • 微信小程序自动化测试——微信小程序云测服务!

    MiniTest 微信小程序云测服务是一套由微信测试团队自主研发,联合WeTest云真机能力,共同推出的微信小程序自动化测试服务。 服务基于云真机,支持开发者简单快捷地实现小程序智能化Monkey测试,录制回放,自定义测试和性能分析等能力,并提供详细的测试结果及性能数据,

    2024年04月15日
    浏览(54)
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS Android 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小程序页面数据,让测试不止点点点 可以直接触发小程序元素绑定事件 支持往 AppSerive

    2024年02月04日
    浏览(47)
  • pyautogui微信小程序自动化操作

    一个很简单的脚本,用途是实现微信小程序或其他软件的自动化操作,如果是长期固定需求,可以考虑把脚本内置到常用软件的环境中,比如MAYA,当我每天打开MAYA时就可以实现每天自动在小程序上疫情打卡 主要使用pyautogui和opencv模块,opencv用于图像识别,pyautogui用于键鼠操

    2024年02月11日
    浏览(48)
  • 微信小程序接口自动化-获取微信code

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登陆需要在小程序内部调用 wx.login() 的方法拿到 code,然后去请求服务获取到 token,后续的接口才能请求。 如何获取 code 去进行token获取。 Python 使用minium,JS 使用miniprogram-automator,这是微信官方提供的 UI 自动

    2024年02月08日
    浏览(49)
  • 如何用python自动化微信小程序

    如何微信小程序自动化抢到跨境安 最近,接到一个这样的需求,最终交付的结果如下: 为了保护隐私,做了马赛克的处理。 程序提供一个界面,用于启动模拟器和实现启动抢票脚本 模拟器被封装程序的安装目录下 整个自动化的工程采用python实现: 核心的伪代码如下图所示:

    2024年02月13日
    浏览(50)
  • 微信小程序自动化测试框架 Minium——快速开始

    Minium 是微信测试团队为小程序专门开发的自动化框架。它实现了miniprogram-automator 中小程序自动化能力。使用 Minium 可以进行小程序 UI 自动化测试,但是 minium 的功能不止于仅仅是 UI 自动化,甚至可以使用 Minium 来进行函数的 Mock,可以直接跳转到小程序某个页面并设置页面数

    2023年04月23日
    浏览(79)
  • 【接口测试】微信小程序接口自动化的实现方案

    前几天看到有人问微信小程序怎么进行接口自动化,所以想把自己如何进行微信小程序接口自动化的方法分享下。 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html这是微信小程序的登陆流程,小程序登陆需要在小程序内部调用 wx.login() 的方法拿到 code,然后去请

    2024年02月09日
    浏览(45)
  • 微信小程序自动化测试——自定义测试(Minium)

    前文 微信小程序自动化测试——录制回放 提到录制回放 支持输入,文本查找,断言等自动化测试基础操作,无需编写代码,用例生成效率高,但是部分操作不支持,对复杂业务场景有局限性。如果用户希望适用复杂的业务场景,自主制定测试场景,可以尝试 自定义测试(

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包