基于Python的Appium环境搭建合集
<p>自动化一直是测试圈中的热聊,也是大家追求的技术方向。在测试中,往往回归测试也是测试人员的“痛点”。对于迭代慢、变更少的功能,就能用上自动化来替代人工回归,减轻工作量。</p><h2>问题</h2>
<p>在分享环境搭建之前,先抛出我的一个疑问吧。</p>
<p>app启用时,分不同的场景:</p>
<p>1.首次安装启用,有欢迎页;</p>
<p>2.非首次启用,直接进入到登录页;</p>
<p>3.配置了推荐展示时,启用app,会先展示推荐内容,才进入到登录页。</p>
<p>不同场景对应的activity都是不同的,我目前处理办法是,写了个输入函数,加了个if判断去对应不同的activity,总觉得不智能,看此篇的博友们,能否给建议解惑一下。谢谢。</p>
<p>说了这么多,该进入正题了。Appium环境搭建,需要安装的软件还是有好几个,一个安装失败,就可能导致整个环境搭建失败。先罗列下需要用到的软件,如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 128, 1)">1</span>.jdk-8u221-<span style="color: rgba(0, 0, 0, 1)">window(下载对应版本)
</span><span style="color: rgba(128, 0, 128, 1)">2</span>.Android-sdk_r24.<span style="color: rgba(128, 0, 128, 1)">4.1</span>-<span style="color: rgba(0, 0, 0, 1)">windows(下载最新版)
</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">.Python
</span><span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">.appium
</span><span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">.Node.js
</span><span style="color: rgba(128, 0, 128, 1)">6</span>.Appium-python-<span style="color: rgba(0, 0, 0, 1)">Client
</span><span style="color: rgba(128, 0, 128, 1)">7</span>.pycharm</pre>
</div>
<h2>一、jdk安装</h2>
<p>jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html</p>
<p>JDK一键安装,无需多讲,默认安装路径即可</p>
<p>环境配置:计算机>属性>高级属性>环境变量</p>
<p>变量名:JAVA_HOME</p>
<p>变量值:D:\Java\jdk1.8.0_73(这里是jdk安装路径)</p>
<p>变量名:path</p>
<p>变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(使得系统可以在任何路径下识别java命令)</p>
<p>变量名:CLASSPATH</p>
<p>变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(这里需要注意的是.不能漏)Java运行环境加载类的路径</p>
<p>环境配置是否成功,输入javac或者java -version验证,出现如下界面表示成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906190619812-218672336.png" alt=""></p>
<p> </p>
<p> <img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906190639356-767242268.png" alt=""></p>
<h2>二、sdk工具类安装</h2>
<p>Android SDK提供开发测试所必须的Android API类库和开发工具</p>
<h3>1.sdk下载</h3>
<p>sdk下载地址:https://www.androiddevtools.cn/</p>
<p>我们需要下载的是SDK Tools</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906191157364-638772913.png" alt="" width="1061" height="485"></p>
<p> </p>
<h3>2.工具类安装</h3>
<p>安装方式:</p>
<p>将下载的zip包解压,直接安装即可。</p>
<p>打开SDK Manager(首次自动弹出),按照默认勾选安装亦可。 主要安装工具Platform-tools、build-tools、Android API(选择最新版本即可),还有扩展插件Google USB Driver,其他根据实际情况自行选择。如下图:</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906191337530-1319301681.png" alt=""></p>
<p> </p>
<p>下载安装时,走的是外网,如果觉得下载速度太慢,可以配置国内镜像进行加速。</p>
<p>更改镜像地址Tools -> Options</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906191506358-171077983.png" alt=""></p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">大连东软信息学院镜像服务器地址:
http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.neusoft.edu.cn 端口:80</span>
<span style="color: rgba(0, 0, 0, 1)">北京化工大学镜像服务器地址:
IPv4: http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ubuntu.buct.edu.cn/ 端口:80</span>
IPv4: http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ubuntu.buct.cn/ 端口:80</span>
IPv6: http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ubuntu.buct6.edu.cn/ 端口:80</span>
<span style="color: rgba(0, 0, 0, 1)">上海GDG镜像服务器地址:
http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">sdk.gdgshanghai.com 端口:8000</span>
<span style="color: rgba(0, 0, 0, 1)">中国科学院开源协会镜像站地址:
IPV4</span>/IPV6: http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.opencas.cn 端口:80</span>
IPV4/IPV6: http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.opencas.org 端口:80</span>
IPV4/IPV6: http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.opencas.ac.cn 端口:80</span></pre>
</div>
<p>下载过程中,可以去喝杯茶,看看网页,需要一小会哟</p>
<h3>3.配置环境变量</h3>
<p>喝杯茶的功夫,sdk所需的工具类是下载成功了,接下来就是要配置环境变量了。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">环境变量配置
</span><span style="color: rgba(128, 0, 128, 1)">1</span>.ANDROID_HOME:D:\Android\android-<span style="color: rgba(0, 0, 0, 1)">sdk自己实际安装路径
</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.</span>Path<span>已有变量追加值:<br></span>%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools\<span style="color: rgba(128, 0, 128, 1)">28.0</span>.<span style="color: rgba(128, 0, 128, 1)">3</span>\; 自己具体版本号</pre>
</div>
<h3>4.验证</h3>
<p>使用adb命令验证即可,在dos窗口输入adb,出现如下截图,说明安装成功</p>
<p> <img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906192408926-170689600.png" alt=""></p>
<p> </p>
<h2>三、Python安装</h2>
<p>python的安装方式就略过了,也只是一路下一步即可,无须赘述。</p>
<h2>四、Appium</h2>
<h3>1.什么是Appium</h3>
<p>Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。</p>
<p>Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。</p>
<h3>2.Appium工作原理</h3>
<h4>2.1 Android</h4>
<p>在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。</p>
<p>另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。</p>
<h5>appium 在android端工作流如下:</h5>
<p>①client端也就是我们的webdriver测试脚本;</p>
<p>②中间起的是Appium服务,Appium在服务端起了一个Server(端口:4723)。跟selenium Webdriver测试框架类似,Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤对应的框架响应操作;</p>
<p>③appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现;</p>
<p>④Bootstrap将执行的结果返回给appium server;</p>
<p>⑤appium server最后将结果返回给 appium client。</p>
<h4>2.2 IOS</h4>
<p>在IOS端,appium同样使⽤WebDriver的一套协议。与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自动化测试框架),然后在设备中注⼊入bootstrap.js进⾏行监听。</p>
<h5>appium 在ios端工作流如下:</h5>
<p>①client端依然是我们的webdriver测试脚本;</p>
<p>②中间起的是Appium服务,Appium在服务端起了一个Server(端口:4723)。跟selenium Webdriver测试框架类似,Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤对应的框架响应操作;</p>
<p>③appium server调用instruments.js 启动一个socket server,同时分出一个子进程运⾏instruments.app,将bootstrap.js(一个UIAutomation脚本)注入到device⽤于和外界进行交互;</p>
<p>④Bootstrap.js将执行的结果返回给appium server;</p>
<p>⑤appium server最后将结果返回给 appium client。</p>
<p>所以我们可以看到android与ios区别在于appium 将请求转发到bootstrap.js或者bootstrap.jar,然后由bootstrap 驱动UIAutomation和UiAutomator去devices上完成具体的动作。</p>
<p>更多详细可参见这篇博文:https://www.cnblogs.com/sophia194910/p/7515165.html</p>
<h3>3.Appium安装</h3>
<p>Appium下载地址:https://bitbucket.org/appium/appium.app/downloads/</p>
<p> <img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906211853384-1035944358.png" alt=""></p>
<p> </p>
<p>将下载的zip包解压后安装,安装很简单,按提示操作即可。</p>
<h4>配置环境变量</h4>
<p>path环境变量:追加环境变量 C:\Program Files (x86)\Appium\node_modules\.bin; 具体安装路径</p>
<h4>验证</h4>
<p>输入命令appium-doctor查看,出现如下截图,说明安装成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906212148660-573389400.png" alt=""></p>
<p> </p>
<h2>五、Node.js</h2>
<p>配置Appium的环境,必须要有Node.js(Appium就是由Node.js编写的),所以需要对Node.js进行安装和配置环境。</p>
<p>下载地址:http://nodejs.cn/download/</p>
<p>下载对应的版本,如下所示</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906212537411-2108841754.png" alt="" width="898" height="377"></p>
<p> </p>
<p>下载安装包后,双击安装,具体步骤忽略了,很简单。</p>
<h3>配置环境变量</h3>
<p>加path环境变量:C:\Program Files\nodejs\ node安装路径</p>
<h3>验证</h3>
<p>通过命令node -v查看node版本,出现如下截图,说明安装成功</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906212827408-586112468.png" alt=""></p>
<p> </p>
<h2>六、Appium-python-Client</h2>
<h3>1.什么是Appium-python-Client</h3>
<p>Appium的实用方法都在Client的源码里,对于driver和webelement实例,均有对应的元素查找方法(webelement查找的是下面的子元素),有些儿专门针对手机的函数,则需要在这个Client安装后方可使用。</p>
<p>Appium为了实现自己的find查找方式,首先自定义了一个MobileBy类,给这个类对象塞入了它定义的一些扩展属性,这些属性的值会通过webdriver协议推送到server端去识别和执行,为了让这些属性运用到find方法中,appium很好地继承和扩展了webdriver.Remote,然后通过调用driver实例的find_element和find_elements两个核心方法实现元素查找。所以,既然是扩展,appiumdriver实例可以使用seleniumdriver的所有关于元素查找的实例方法。</p>
<h3>2.安装Appium-python-Client</h3>
<p>使得appium和python建立连接关系,使用命令:pip install Appium-Python-Client,出现如下截图,则说明安装成功。</p>
<p><img src="https://img2018.cnblogs.com/blog/1242227/201909/1242227-20190906213712355-688669866.png" alt=""></p>
<p> </p>
<h2>七、Pycharm</h2>
<p>工具安装也忽略了,安装很简单的。</p>
<p> </p>
<p>经过如上七个步骤的操作,基于Python的Appium环境搭建就成功了。虽说成功了,但也仅仅是个开端而已,想要做好自动化,还是需要静下心来,研习一番。今天的环境搭建就介绍到这了,下次带来genymotion及脚本的分享。有描述错误的地方,欢迎批评指正。</p><br><br>
来源:https://www.cnblogs.com/hong-fithing/p/11475812.html
頁:
[1]