• 使用Appium进行微信公众号自动化测试


    1. 查看Android的webview视图版本:手机链接电脑后在电脑Chrome打开页面chrome://inspect/#devices查看Android的Chrome内核版本
       
       
    2. 下载与该版本相对应的ChromeDriver.exe替换掉Appium目录下的ChromeDriver.exe,路径:C:UsersmiduoAppDataLocalProgramsappium-desktop esourcesapp ode_modulesappium ode_modulesappium-chromedriverchromedriverwin请根据个人安装情况找到文件并替换。
    3. 代码调整:
      实例化Remote时需要添加一个配置:'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
    desired_caps = {
        'platformName': 'Android',
        'fastReset': 'false',
        'deviceName': "391dda45",
        'appPackage': 'com.tencent.mm',
        'appActivity': '.ui.LauncherUI',
        'fullReset': 'false',
        'unicodeKeyboard': 'True',
        'resetKeyboard': 'True',
        "noReset": True,
        "fullReset": False,
        "fastReset": False,
        'chromeOptions': {
            'androidProcess': 'com.tencent.mm:tools'
          }  #  这句很重要   'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'} 
    }
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    …… # 进入微信公众号页面的操作
    
    # 点击链接进入微信公众号之后,需要切换上下文(webview),如果不能理解,则可以把他看成Iframe
    print(driver.contexts)  #打印查看当前页面有多少webview
    driver.switch_to.context("WEBVIEW_com.tencent.mm:tools") # 切换
    # 如果切换后存在多个handle,则需要判断当前handle对不对,不对的话需要切换到正确的句柄
    while True:
        if PageElement("a", "tag").entity(a.driver, True):
            break
        else:
            a.driver.switch_to.window(a.driver.window_handles[-1])
    print(driver.page_source)  #打印html页面源代码
    # 切换后实质上就是Selenium使用操作公众号了(本质就是一个Html),
    # 当然如果需要跳回到App中操作,则driver.switch_to.context("NATIVE")切换会默认的视图进行操作。
    
    1. 微信公众号元素定位,因为使用uiautomatorviewer.bat工具无法定位到微信公众号的页面元素,要进行微信公众号的元素定位,有几种方案:
    • 手机链接电脑后在电脑Chrome打开页面chrome://inspect/#devices并选择公众号的webview点击下方inspect链接,但第一次使用会链接到谷歌,所以需要FQ才能正常使用
    • 找开发拿页面源文件进行定位。
    • 如果开发无法提供源文件,则使用driver.page_source将源代码在本地生成html文件本地打开。


    作者:bilibala_
    链接:https://www.jianshu.com/p/04116183a76c
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    深度解析U-Boot网络实现(长篇好文)
    优化嵌入式Linux的启动时间之内核
    优化嵌入式Linux的启动时间之文件系统
    Java安全之 ClassLoader类加载器
    Java 审计之xss审计要点
    Java审计之命令执行篇
    Java审计之文件操作漏洞
    Java 审计 之过滤器防御xss
    Java 审计之SSRF篇(续)
    Java 审计之SSRF篇
  • 原文地址:https://www.cnblogs.com/peachh/p/9740189.html
Copyright © 2020-2023  润新知