欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 从定义、原理、环境搭建、安装问题排查等深入了解Appium

从定义、原理、环境搭建、安装问题排查等深入了解Appium

2025/4/4 7:32:00 来源:https://blog.csdn.net/weixin_46281518/article/details/146956768  浏览:    关键词:从定义、原理、环境搭建、安装问题排查等深入了解Appium

1 关于Android UI自动化测试

  • Android UI自动化测试工具有很多,这些工具基本是基于Android控件层面,涉及WidgetsWebView两类;
  • 而关于其测试方法一般有二:

第一种是: 通过Android提供的各种服务来获取当前窗口的视图信息,如UI Automator

第二种是: 基于Instrumention,把测试APK和被测APK运行在同一个进程中,通过Java反射机制来获取当前窗口的所有视图,如Robotium

  • 常用的测试工具有:UI AutomatorAppiumEspressoSelendroidRobotium等;
  • 本文主要介绍的是Appium

2 Appium简介

  • Appium是开源的、跨平台的测试自动化测试框架;
  • 主要用于测试移动端应用;
  • Appium支持模拟器和真机上的原生应用、混合应用、Web应用;
  • Appium使用WebDriverJSON wire协议来驱动Apple系统的UI Automator库、Android系统的UI Automator框架;
  • Appium集成了Selendroid框架,所以Appium支持比较老版本的Android
  • Appium支持Selenium WebDriver支持的所有语言(JavaPythonJavaScriptObjective-CPHPRubyC#ClojurePerl等)。

3 Appium原理

3.1 Android端过程

  • 客户端client,指咱们的测试脚本;
  • Appium在服务端启动一个Server(4723端口),用来接口WebDriver client标准的rest请求,调用对应框架响应操作;
  • Appium Server把请求转发给中间件Bootstrap.jar(手机上),Bootstrap.jar监听4724端口并接收Appium命令;
  • Bootstrap将执行结果返回给Appium Server
  • Appium Server再将结果返回给Appium Client

3.2 iOS端过程

  • 客户端client,指咱们的测试脚本;
  • Appium在服务端启动一个Server(4723端口),用来接口WebDriver client标准的rest请求,调用对应框架响应操作;
  • Appium Server调用instruments.js,启动socket server,分出子进程instruments.app,将bootstrap.js注入device
  • bootstrap.js将执行结果返回给Appium Server
  • Appium Server再将结果返回给Appium Client

4 补充内容

  • UI Automator测试框架是Android SDK自带的APP UI自动化测试Java库;
  • UI AutomatorH5支持有限;
  • Appium引入了chromedriver等来实现基于H5的自动化;
  • Android和iOS启动过程的区别在Appium将请求转发给了Bootstrap.jarbootstrap.js,再由Bootstrap驱动UI AutomatorUI Automation

5 JDK下载

  • 安装地址:Java Downloads;

  • 根据操作系统选择下载,我的是Windows平台;
  • 双击安装文件,按照提示,可以一步步安装,中间会有两次选择安装路径,第一次是安装Jre,第二次是安装Jdk,两次的安装目录,建议单独放在一个磁盘的根目录,如下,笔者的是:jdk-11.0.8

  

6 JDK配置

  • 新建系统环境变量JAVA_HOME

 

  • 编辑系统变量Path
Windows10 电脑,新建变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
Windows7 电脑,在变量值最后输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;注意用;号分隔
  • 新建系统变量CLASSPATH变量:
变量名:CLASSPATH  
变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

验证java环境:

 

7 SDK下载

  • SDK下载: SDK官网和 下载较快的SDK网站;
  • 比如我们选第二个进入下载页面:

 

  • 选择对应的平台下载即可,我这里是windows平台的;
  • 下载后解压到指定目录,比如:

 

8 SDK配置

  • SDKplatform-tools、根目录、tools配置到系统环境变量path中;

9 配置Android环境

  • 新建系统环境变量ANDROID_HOME值为SDK根目录:

ANDROID_HOME D:\android-sdk-windows

 

 

  • 新建系统环境变量ANDROID_PATH值为SDKplatform-tools目录:

ANDROID_PATH D:\android-sdk-windows\platform-tools

10 安装NodeJs

  • 安装这个只要是用它来安装appium以及验证后续安装的Appium是否成功;
  • 下载地址:NodeJs:

 

  • 下载后直接双击运行即可node-v20.10.0-x64.msi
  • 安装完在命令行执行npm看到以下界面则表示node安装成功了:

 

11 解决node安装时提示不是内部命令

  • 需要配置node.js的一些环境变;
  • node.js的安装目录下新建两个文件夹如下node_globalnode_cache

  • 打开系统环境变量,新增NODE_PATH变量:

NODE_PATH D:\nodejs\node_modules

 

 在系统环境变量的path新增:%NODE_PATH%

打开用户环境变量,修改path中的npm路径为:D:\nodejs\node_global

  • 重启电脑、重启电脑、重启电脑(重要的事情说三遍)。

12 安装配置Appium

  • Appium官网:

  • 点击左侧的install Appium使用NPM安装:
npm i --location=global appium

 

  • 命令行输入appium即可:
C:\Windows\System32>appium
[Appium] Welcome to Appium v2.2.3
[Appium] Appium REST http interface listener started on http://0.0.0.0:4723
[Appium] You can provide the following URLs in your client code to connect to this server:
[Appium]        http://172.16.1.33:4723/
[Appium]        http://127.0.0.1:4723/ (only accessible from the same host)
[Appium]        http://172.31.32.1:4723/
[Appium] No drivers have been installed in C:\Users\Administrator\.appium. Use the "appium driver" command to install the one(s) you want to use.

 关于安装可参考官网:

 还有环境的要求:

还有一种安装方式为使用GUI界面去安装appium-desktop;

选择的对应包即可:

 这里需要注意下,官网给出了明确说明,appium-desktop将不再支持 Appium 2.0+版本,建议使用命令行方式,

13 appium环境验证

  • 先安装appium-doctor
npm install -g appium-doctor

 

命令行输入appium-doctor,检查环境是否ok:

 

14 appium安装问题排查

  • appium给出这几个错误的安装方法,但是有的地址无法访问了,所以以下对每个错误进行了排查:
### Optional Manual Fixes ###
info AppiumDoctor The configuration can install optionally. Please do the following manually:
WARN AppiumDoctor  ➜ mjpeg-consumer module is required to use MJPEG-over-HTTP features. Please install it with 'npm i -g mjpeg-consumer'.
WARN AppiumDoctor  ➜ bundletool.jar is used to handle Android App Bundle. Please read http://appium.io/docs/en/writing-running-appium/android/android-appbundle/ to install it. Also consider adding the ".jar" extension into your PATHEXT environment variable in order to fix the problem for Windows
WARN AppiumDoctor  ➜ gst-launch-1.0.exe and gst-inspect-1.0.exe are used to stream the screen of the device under test. Please read https://appium.io/docs/en/writing-running-appium/android/android-screen-streaming/ to install them and for more details

 

14.1 cmdline-tools问题

  • 我这一大堆错的,挨个排查吧,先看下这个:
apkanalyzer.bat could NOT be found in D:\android-sdk-windows!

安装:commandlinetools:

解压到SDK的目录下:

cmdline-tools\bin目录下的apkanalyzer.bat文件复制到platform-tools下:

 重新打开cmd,输入appium-doctor ,查看问题解决了:

14.2 opencv4nodejs问题

  • 第二个问题:
 opencv4nodejs cannot be found.

 安装opencv4nodejs,CMake官网:

 下载后双击cmake-3.28.0-rc5-windows-x86_64.msi,安装到默认路径,并勾选增加环境变量给所有用户:

 

  • 如果还是不行,建议手动将其目录添加到系统环境变量中:
C:\Program Files\CMake\bin\
  • 输入cmake -version查看:
cmake version 3.28.0-rc5
  • 安装opencv4nodejs
npm -g install opencv4nodejs --ignore-scripts

重新检查看是否还会报错opencv4nodejs错误,发现是ok了:

14.3 ffmpeg问题

  • 第三个错误:

ffmpeg cannot be found

下载ffmpeg安装包:ffmpeg安装:

 

  • 下载后ffmpeg-release-essentials.zip解压到某个目录下:
D:\ffmpeg-6.1-essentials_build
  • 并添加环境变量:
D:\ffmpeg-6.1-essentials_build\bin

再次检查发现ffmpeg也是ok的:

 

14.4 mjpeg-consumer问题

  • 第四个问题:
 mjpeg-consumer cannot be found
  • 直接使用npm i -g mjpeg-consumer安装即可;
  • 排查也是ok了:

 

14.5 bundletool.jar问题

  • 第五个问题:
bundletool.jar cannot be found

下载安装bundletool.jar,bundletool.jar下载:

 下载后为bundletool-all-1.15.6.jar重新命名为bundletool.jar,在android sdk目录下,新建bundle-tools目录,把bundletool.jar包放入其中:

 

  • 配置环境,在用户和系统环境的path后都追加上述路径的环境:
D:\android-sdk-windows\bundle-tools

修改环境变量中的 PATHTEXT 添加:;.JAR

 验证也是ok了:

 

14.6 gst-launch问题

  • 第六个问题:
gst-launch-1.0.exe and/or gst-inspect-1.0.exe cannot be found

下载gst-launch-1.0.exe and gst-inspect-1.0.exe:gst下载地址:

 双击下载的gstreamer-1.0-mingw-x86_64-1.22.7.msi

 

  • 增加环境变量:

F:\gstreamer\1.0\mingw_x86_64\bin

验证是ok了:

 

15 完整无报错的Appium信息

  • 所有的错误都排查后,完整的信息应该如下:
C:\Windows\System32>appium-doctor
WARN AppiumDoctor [Deprecated] Please use appium-doctor installed with "npm install @appium/doctor --location=global"
info AppiumDoctor Appium Doctor v.1.16.2
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: D:\nodejs\node.EXE
info AppiumDoctor  ✔ Node version is 20.10.0
info AppiumDoctor  ✔ ANDROID_HOME is set to: D:\android-sdk-windows
info AppiumDoctor  ✔ JAVA_HOME is set to: D:\jdk-11.0.8
info AppiumDoctor    Checking adb, android, emulator, apkanalyzer.bat
info AppiumDoctor      'adb' is in D:\android-sdk-windows\platform-tools\adb.exe
info AppiumDoctor      'android' is in D:\android-sdk-windows\tools\android.bat
info AppiumDoctor      'emulator' is in D:\android-sdk-windows\tools\emulator.exe
info AppiumDoctor      'apkanalyzer.bat' is in D:\android-sdk-windows\platform-tools\apkanalyzer.bat
info AppiumDoctor  ✔ adb, android, emulator, apkanalyzer.bat exist: D:\android-sdk-windows
info AppiumDoctor  ✔ 'bin' subfolder exists under 'D:\jdk-11.0.8'
info AppiumDoctor ### Diagnostic for necessary dependencies completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor ### Diagnostic for optional dependencies starting ###
info AppiumDoctor  ✔ opencv4nodejs is installed at: D:\nodejs\node_global. Installed version is: 5.6.0
info AppiumDoctor  ✔ ffmpeg is installed at: D:\ffmpeg-6.1-essentials_build\bin\ffmpeg.EXE. ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
info AppiumDoctor  ✔ mjpeg-consumer is installed at: D:\nodejs\node_global. Installed version is: 2.0.0
info AppiumDoctor  ✔ bundletool.jar is installed at: D:\android-sdk-windows\bundle-tools\bundletool.jar
info AppiumDoctor  ✔ gst-launch-1.0.exe and gst-inspect-1.0.exe are installed at: F:\gstreamer\1.0\mingw_x86_64\bin\gst-launch-1.0.exe and F:\gstreamer\1.0\mingw_x86_64\bin\gst-inspect-1.0.exe
info AppiumDoctor ### Diagnostic for optional dependencies completed, no fix possible. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor

至此我们环境就搭建完成了

熟悉自动化的伙伴都知道,windows系统做自动化相对于ios自动化来说搭建配置环境比较简单,无非就是安装对应的jdk,sdk,appium,需要编写语言,配置环境环境变量,搭建编写我的自动化的测试框架,然后后续直接根据业务实现即可,那么对于ios做自动化建设你是否也是同样的熟悉的,本次我们来看看如何搭建ios端的自动化。

关于IOS部分,整理来源于博主自己公众号:技巧工人

首先必须有mac电脑,在app store中搜索xcode并安装,安装完成后一定记得打开一次,会自动安装xcode的一些工具。

以下步骤均是在mac电脑终端下执行。

安装brew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装libimobiledevice

brew install libimobiledevice --HEAD

上面的安装,在安装过程中可能会出现报错的情况那么就执行如下指令后再次执行上述命令 SSL certificate problem: certificate has expired

git config --global http.sslVerify false

 

安装node

brew install node

安装npm

brew install npm

安装carthage

brew install carthage

安装ios-deploy

npm install ios-deploy

安装appium

npm install appium

安装appium-doctor

npm install appium-doctor

检查appium ios环境

appium-doctor --ios

执行结果中没有error即可

然后输入appium重启

看到以上信息代表成功

appium desktop版本安装

下载地址:

https://github.com/appium/appium-desktop/releases/tag/v1.21.0

 

webdriveragent编译

如果是ios模拟器,那么webdriveragent无需处理

真机下webdriveragent编译

appium命令行版本的webdriveragent源码路径

/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent

进入上述目录,双击WebDriverAgent.xcodeproj文件

先连接真机

1、xcode选择真机

图中红框两个地方都要进行选择

 

2、修改项目的bundleid

bundleid必须保证唯一,否则签名时会报错

图中红框框中的TARGETS都要进行修改

 以WebDriverAgentRunner这个TARGETS为例,修改bundleid

 

其他的TARGETS做相同操作

 

3、签名TARGETS

针对第2步中框中的每个TARGETS做签名操作,以WebDriverAgentRunner这个TARGETS为例

4、执行项目测试

执行webdriveragent的测试会在真机上安装一个WebDriverAgentRunner的app,并且启动他,在手机上启动一个基于8100的http服务,该服务是appium进行操作的必备条件

先选择测试文件,执行测试

第一次执行可能会报如下错误

 

那么进入手机设置-->通用-->设备管理,信任你的applie id即可,然后再重新执行测试,并且打开日志查看

 

日志中没有报错,并且出现图中红框的地址,说明WebDriverAgentRunner 这个app就安装到了手机上并且启动了服务

然后停止测试,点击xcode的停止,至此,wda的app就已经安装在我们需要测的手机上了

ios元素信息查看

1、以豆瓣app为例,因此在真机上先安装豆瓣app

由于参数中需要用到手机相关信息及豆瓣app的bundle_id,因此我们先获取这些信息,在终端下执行如下命令

# 获取当前连接的设备信息ios-deploy -c

 

 

# 获取当前手机已安装的所有app的bundle_id,当然也可以找自己公司的开发问ios-deploy --id 00008101-001038A23AC0001E --list_bundle_id

 

然后在结果中找到豆瓣app的bundle_id为com.douban.frodo

2、ios app的元素信息查看必须依赖于appium desktop版本,因此必须先按照第三步的步骤针对appium desktop版本下的webdriveragent做编译,路径如下:

  •  
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent

 

编译完成并安装wda app到真机上后,打开appium desktop,启动server,在inspect界面添加如下参数并保存

  • platformName: ios

  • deviceName: iphone 12

    值就是第一步中查看手机信息时看到的设备名称

  • platformVersion: 14.1

    值就是第一步中查看手机信息时看到的设备的ios系统版本

  • udid: 00008101-001038A23AC0001E

    值就是第一步中查看手机信息时看到的设备的udid

  • bundleId: com.douban.frodo

    值就是第一步中得到的豆瓣app的bundle_id

  • automationName: XCuiTest

  • usePrebuildWDA: true

 

设置好以后,点击start session

 

稍等片刻,会出现inspect调试界面

 

appium在ios的工作原理

 

appium ios服务参数

android和ios公共参数

Capability

Description

Values

automationName

使用的自动化引擎

1.默认是Appium(Android下是uiautomator2,ios下是uiautomation)

2.安卓下还可以指定uiautomator1,ios下还可以指定为XCUITest(只能是这个)

platformName

使用的手机操作系统

iOS, Android, or FirefoxOS

platformVersion

手机操作系统的版本

e.g., 7.1, 4.4

deviceName

手机设备的名字或者模拟器名字(虽然是必须项,但在安卓平台上这个值写啥都行,不影响脚本)

iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulator, Galaxy S4, 等等.... 在 iOS 上,使用 Instruments 的 instruments -s devices 命令可返回一个有效的设备的列表

udid

链接物理指定设备的唯一标识

e.g. 1ae203187fc012g1. 安卓上就是通过adb devices看到的设备名称2. ios上可以用个idevice_id -l去查看设备的udid

 

元素定位

 

定位方式

原生app界面对应属性

H5界面对应属性

By.ID

x

id

By.XPATH

//XCUIElementTypeButton

//div

By.NAME

×

name

MobileBy.MobileBy.IOS_PREDICATE

label == "登录" AND name == "登录" AND type == "XCUIElementTypeButton"

×

MobileBy.IOS_CLASS_CHAIN

 

x

MobileBy.ACCESSIBILITY_ID

name

×

By.TAG_NAME

×

标签名

By.LINK_TEXT

×

a标签的文字

By.PARTIAL_LINK_TEXT

×

a标签的文字

By.CSS_SELECTOR

×

css表达式

By.CLASS_NAME

type

class

MobileBy.MobileBy.IOS_PREDICATE 定位补充:

MobileBy.MobileBy.IOS_PREDICATE 定位方式主要是以元素属性进行定位,可以多个可以模糊匹配等等。

属性等于=:

driver.find_element(MobileBy.IOS_PREDICATE,'name = "陈健"')

属性模糊匹配LIKE:

driver.find_element(MobileBy.IOS_PREDICATE,'name LIKE "陈健"')

属性包含CONTAINS:

driver.find_element(MobileBy.IOS_PREDICATE,'name CONTAINS "建"')

属性值开头匹配BEGINSWITH:

driver.find_element(MobileBy.IOS_PREDICATE,'name BEGINSWITH "陈健"')

属性值结尾匹配ENDSWITH

driver.find_element(MobileBy.IOS_PREDICATE,'name ENDSWITH "建"').click()

多属性同时匹配AND:

driver.find_element(MobileBy.IOS_PREDICATE,'name = "陈健" AND label="陈健"')

多属性或者匹配OR:

driver.find_element(MobileBy.IOS_PREDICATE,'name = "陈健" OR label="陈健"')

比较运算符>、<、==、>=、<=、!=:

driver.find_element(MobileBy.IOS_PREDICATE,'value>50')
driver.find_element(MobileBy.IOS_PREDICATE,'value<50')
driver.find_element(MobileBy.IOS_PREDICATE,'value!=50')

正则匹配MATCHES:

driver.find_element(MobileBy.IOS_PREDICATE,'name MATCHES "正则表达式"')

MobileBy.IOS_CLASS_CHAIN 定位补充:

MobileBy.IOS_CLASS_CHAIN定位方式和xpath极其相似,也是按照元素层级和元素属性进行定位的

#查找type属性为XCUIElementTypeSecureTextField并且value为请输入密码的元素driver.find_element(MobileBy.IOS_CLASS_CHAIN,'**/XCUIElementTypeSecureTextField[`value=="请输入密码"`]')
#查找type属性为XCUIElementTypeSecureTextField的第一个driver.find_element(MobileBy.IOS_CLASS_CHAIN,'**/XCUIElementTypeSecureTextField[1]')

driver常用相关api

获取屏幕分辨率

driver.get_window_size()['width'] #获取屏幕的宽driver.get_window_size()['height'] #获取屏幕的高

整屏滑动​​​​​​​

# 起始点坐标200,700   结束点坐标200,100  持续时间500毫秒
driver.swipe(200,700,200,100,500)

启动激活第三方app

# 启动已安装的某个应用,参数第一个是应用的bundleiddriver.activate_app('com.tencent.chenjina')

设备横竖屏相关操作​​​​​​​

#获取设备横竖屏方向,PORTRAIT表示竖屏,LANDSCAPE表示横屏
driver.orientation
#设置设备为横屏
driver.orientation = 'landscape'
# 设置设备为竖屏
driver.orientation ='portrait'

app安装卸载相关​​​​​​​

#判断app是否安装,参数是app的包名称driver.is_app_installed('com.tencent.chenjian')
#安装app,参数是安装包路径driver.install_app('C:\\Users\\chenjian\\Desktop\\douban.ipa')
#卸载app,参数是包名称driver.remove_app('com.tencent.chenjian')

重启当前待测app​​​​​​​

#重新启动
appdriver.reset()

重新运行app,注意该方法会重建session

driver.launch_app()

关闭app,只针对当前测试的app

driver.close_app()

获取设备时间

driver.device_time

 

context相关操作,主要用于混合app操作webview界面时​​​​​​​

#获取当前context
driver.current_context
#获取当前所有context
driver.contexts
#切换到混合webview界面的context
driver.switch_to.context('WEBVIEW_XXX')
#切换到原生切换的context
driver.switch_to.context('NATIVE_APP')

设备屏幕相关操作​​​

#判断设备是否锁屏
driver.is_locked()
#解锁屏幕,让屏幕亮起来
driver.unlock()
#锁定屏幕,可以传参锁几秒
driver.lock()

键盘隐藏,不是很管用​​​​​​​

driver.hide_keyboard(key_name='NEXT')
#点键盘上的NEXT键隐藏
driver.hide_keyboard(key_name='DONE')
#点键盘上的DONE键隐藏
driver.hide_keyboard()

元素特有相关api​​​​​​​

element.get_attribute('enabled')
element.get_attribute('index')
element.get_attribute('label')
element.get_attribute('name')
element.get_attribute('selected')
element.get_attribute('type')
element.get_attribute('value')
element.get_attribute('wdRect')

获取元素相关坐标​​​​​​​

element.location.get('x') #获取元素起始点xelement.location.get('y') #获取元素起始点yelement.size.get('width')#获取元素的宽element.size.get('height') #获取元素的高

手势相关api

多点移动​​​​​​​

action = TouchAction(driver=driver)
#多个坐标点移动action.press(x=320,y=200).move_to(x=320,y=400).move_to(x=400,y=500).release().perform()
#
多个元素移动action.press(element=element).move_to(element=element1).move_to(element=element2).release().perform()

拖拽​​​​​​​

action = TouchAction(driver=driver)
#拖拽坐标点action.press(x=320,y=400).wait(3000).move_to(x=320,y=800).release().perform()
#
拖拽元素action.press(element=element).wait(3000).move_to(element=element1).release().perform()

长按​​​​​​​

action = TouchAction(driver=driver)
#长按某个坐标点action.long_press(x=320,y=400).release().perform()
#长按某个元素action.long_press(element=element).release().perform()

单击tap​​​​​​​

action = TouchAction(driver=driver)
#单击某个坐标点action.tap(x=320,y=400).perform().release()
#单击某个元素action.tap(element=element).perform().release()

混合app处理

  • 开启电脑safari开发者选项

    打开电脑的safari浏览器,按照下述步骤操作

 

 

 

设置完成后在顶部菜单可以看到【开发】菜单

 

设置手机safari浏览器

设置-->Safari-->高级-->网页检查器(打开)

元素信息查看

在手机上打开待测app的webview页面,然后在电脑上做如下操作

 

点击后就打开了开发者工具,这和web端的定位就一样了

 

代码处理

对于webview界面的测试时,需要将driver切换至webview的context上,然后才能去定位元素,代码如下:​​​​​​​

#为什么要做个循环,是因为在获取webview的context时不稳定
# 循环10次获取,每次间隔一秒
count = 10
whilecount>0: 
     time.sleep(1) 
    # 获取当前所有的context 
     contexts = driver.contexts 
     for context in contexts:     
          if 'WEBVIEW' in context:
                 driver.switch_to.context(context)         
                 count = 0 
count -= 1

driver切换以后就可以按照web端的定位操作方式去操作了

H5页面处理

手机上H5页面,可以理解成用浏览器打开的app页面,其实就是网页,ios手机safari浏览器打开的H5的元素查看方式和第10步一样,不同的地方在于driver初始化参数的不同​​​​​​​​​​​​​​

desired_caps= {   
         "platformName": "ios",   
         "deviceName": "iPhone12",   
         "automationName": "XCuiTest",   
         "platformVersion": "14.1",   
         "udid":"00008101-001038A23AC0001E",   
         "usePrebuiltWDA": True,   
         "noReset":False,   
         "wdaLocalPort": 8101,   
         "showXcodeLog": True,   
         "autoAcceptAlerts": True,   
         "newCommandTimeout":600,   
         "browserName":"Safari" #指定浏览器
}

基本操作和web自动化一致,好了,到这里,ios的自动化介绍和使用已经结束, 你学会了,记得如果第一遍不会,记得收藏方便下次查看。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词