Appium-混合应用、小程序启动

区分原生、H5

打开手机手机开发者模式,同时打开手机系统设置-开发者选项-显示布局边边界
----如果页面是整块,则为H5页面;如果页面标注一个个控件,则为原生
Appium-混合应用、小程序启动_第1张图片
Appium-混合应用、小程序启动_第2张图片
Appium-混合应用、小程序启动_第3张图片

Html5 webview元素定位工具的实现

一、工具选择
webview元素定位有三种方式:

  • 使用driver.page_source方法,将获取到的页面内容写入到一个html文件中,然后使用浏览器打开html文件,使用F12调试用具进行元素定位
  • chrome浏览器自带的调试工具 Developer Tools,在chrome浏览器中输入:chrome://inspect#devices,该工具需要访问国外的网站,因此需要
  • 使用UC开发者调试工具,需要提前安装,无需
    综上,推荐使用UC开发者调试工具

二、UC-devtools安装
1.百度搜索“uc-devtools”
Appium-混合应用、小程序启动_第4张图片
2.点击进入安装包下载页面
Appium-混合应用、小程序启动_第5张图片
Appium-混合应用、小程序启动_第6张图片
3.下载Windows安装包进行安装
解压后双击安装,根据提示安装,建议更改安装路径,安装完成后,在安装目录下启动应用程序
Appium-混合应用、小程序启动_第7张图片
4.启动前准备
启动之前,依然要打开app的debug调试模式,手机需要打开“USB调试模式”,启动后的界面如下:
Appium-混合应用、小程序启动_第8张图片
5.设置为本地 Devtools Inspector UI 资源
Appium-混合应用、小程序启动_第9张图片
三、UC-开发者调试工具的使用
开启了UC-开发者调试工具后,手机开启app到webview页面,就会自动显示webview相关信息
Appium-混合应用、小程序启动_第10张图片
点开inspect,就会弹出html的页面
Appium-混合应用、小程序启动_第11张图片
这个结构就跟web的html页面元素基本一致,我们可以通过该工具使用selenium的一些元素定位方法进行定位即可

四、匹配webview的chromedriver版本
我们从第三项关注到UC-开发者调试工具首页显示了chrome版本信息,当然该webview也需要有对应版本的chromedriver驱动去跟浏览器版本匹配,我们之前都是将chromedriver驱动文件放在了python的安装目录下,但是在这里因为每个webview都会涉及到不同的驱动版本,这时我们该如何管理呢?具体步骤如下:
第一种:

  • 下载对应chrome浏览器版本的chromedriver驱动
  • 创建一个chromedriver驱动的不同版本管理目录
    Appium-混合应用、小程序启动_第12张图片
    将对应版本的chromedriver驱动放在对应的管理目录下
    指定chromedriver驱动,通过启动参数chromedriverExecutable指定路径
desired_caps['chromedriverExecutable'] = r'G:\ChromeVersionManagement\chromedriver70\chromedriver.exe'

第二种:

  • 下载对应的Google驱动放入到appium安装的chromedriver中
  • 初始化脚本添加chromedriverExecutabl字段
  • appium高级设置中添加如下
    Appium-混合应用、小程序启动_第13张图片
    Appium-混合应用、小程序启动_第14张图片
    定位H5中的元素,首先要切换到H5页面中
import time
from appium.webdriver import Remote
from appium.webdriver.common.mobileby import MobileBy


desired_cap = {
    "platformName": "Android",
    "platformVersion": "7.1.2",
    "deviceName": "HUAWEI",
    "appPackage": "com.lemon.lemonban",
    "appActivity": "com.lemon.lemonban.activity.WelcomeActivity",
    "noReset": False,
    # 传入浏览器的驱动,UC-devtools工具上对应的版本
    "chromedriverExecutable": "D:\Installer\chromedriver_win32_2\chromedriver.exe"
}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                desired_capabilities=desired_cap)
driver.implicitly_wait(10)
# 点击柠檬社区
nm_comm_ele = (MobileBy.ANDROID_UIAUTOMATOR, 'text("关于我们")')
driver.find_element(*nm_comm_ele).click()
time.sleep(5)
# 获取当前app的上下文
contexts = driver.contexts
print(contexts)
# 切换到H5页面中
driver.switch_to.context(contexts[1])
time.sleep(3)
# 在H5页面中搜索
guanyu = (MobileBy.XPATH, '//input[@id="searchInput"]')
driver.find_element(*guanyu).send_keys('123456789')

**从webview中切换出来**
```python
driver.switch_to.default_content()

真机调试步骤:

①连续点击5下版本号,更多设置,进入开发者模式
②开启一下选项:

  • USB调试
  • USB安装
  • USB调试(安全设置)
  • 显示坐标:指针位置(滑动线)
    ③开启微信小程序或者微信公众号调试模式
    注意:以下方法仅适用于安卓手机,IOS手机得在项目里面安装v-console插件
  • 手机访问此链接,开启debug模式:
    http://debugmm.qq.com/?forcex5=true
  • 如果以上链接并没有开启debug模式,那接下来访问下面这个链接下载X5内核,然后点击:安装线上内核,然后点击:DebugX5,接着点击:信息,勾选上vconsole调试模式:
    http://debugx5.qq.com
  • 获取微信的包名和启动文件
  • “appPackage”: “com.tencent.mm”,
  • “appActivity”: “com.tencent.mm.ui.LanucherUI”

使用Appium测试微信小程序 Webview

一、获取小程序所在进程
(微信运行有多个进程,需要知道小程序运行的进程)
1、打开微信进入小程序,在cmd当中运行
2、获取进程号命令:adb shell dumpsys activity top|findstr ACTIVITY
在这里插入图片描述
3、通过进程号获取进程名称:adb shell ps 5470
Appium-混合应用、小程序启动_第15张图片
4、在启动参数中指定小程序的进程名称

"chormeOptions": {"androidProcess": "进程名"}

二、需要再启动参数中加上:

"recreateChromeDriverSessions": True,

未完。。。

你可能感兴趣的:(Python自动化,python,小程序,webview,chrome)