渝牛 發表於 2020-3-23 21:50:00

Python+Appium实现自动化测试

<h3>一、环境准备</h3>
<p>1.脚本语言:Python3.x&nbsp; &nbsp;&nbsp;<span lang="EN-US">IDE:安装P<span lang="EN-US">ycharm</span></span></p>
<p>2.安装Java JDK 、Android SDK</p>
<p>3.adb环境,path添加E:\Software\Android_SDK\platform-tools</p>
<p>4.安装Appium for windows,官网地址&nbsp;http://appium.io/</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322205416825-2087563945.png" alt=""></p>
<p>&nbsp;点击下载按钮会到GitHub的下载页面,选择对应平台下载</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322205838471-1939844742.png" alt="" width="808" height="574"></p>
<p>&nbsp;安装完成后,启动Appium,host和port默认的即可,然后设置Android SDk和Java JDK&nbsp; &nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322210338938-557235082.png" alt="" width="803" height="749"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322211209744-1344826085.png" alt="" width="803" height="381"></p>
<p>&nbsp;然后点下边那个保存并重启的按钮,然后点第一个Start Server按钮,将会看到</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322220314511-1426829342.png" alt=""></p>
<h3>&nbsp;二、真机测试</h3>
<p>1.连接手机</p>
<p>打开开发者模式,USB线连接手机和电脑,并且在开发者选项当中,开启USB调试</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322214718211-1098273705.png" alt="" width="794" height="412"></p>
<p>&nbsp;测试是否连接成功,可执行命令adb devices</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322215732229-1428298977.png" alt=""></p>
<p>&nbsp;&nbsp;<span style="color: rgba(77, 77, 77, 1); font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px">出现上图就证明手机和电脑连接成功。。。</span></p>
<p><span style="color: rgba(77, 77, 77, 1); font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px">&nbsp;2.</span><span style="color: rgba(77, 77, 77, 1); font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px">点击Start Inspector Session,</span></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322213819225-996605253.png" alt=""></p>
<p>&nbsp;按如下配置Desired Capabilities</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322221159991-1650842990.png" alt=""></p>
<p><strong>&nbsp;platformName</strong>&nbsp;:声明是ios还是Android系统</p>
<p>&nbsp;<strong>platformVersion</strong>&nbsp;: Android内核版本号,可通过命令adb shell getprop ro.build.version.release查看</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322223453536-92798956.png" alt=""></p>
<p>&nbsp;<strong> deviceName</strong>&nbsp;:连接的设备名称,通过命令adb devices -l中model查看</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322223316258-865388201.png" alt=""></p>
<p>&nbsp; <strong>appPackage</strong>&nbsp;:apk的包名</p>
<p>&nbsp;<strong> appActivity:</strong>apk的launcherActivity,通过命令adb shell dumpsys activity | findstr “mResume”查看(需先打开手机应用)</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200322223109175-35464142.png" alt=""></p>
<p>注意:Android 8.1之前应使用adb shell dumpsys activity | findstr “mFocus”</p>
<p>&nbsp;3.运行Start Session,选择元素</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200323202659066-1897221876.png" alt=""></p>
<p>&nbsp;右侧 Selected Element 区域有三个按钮</p>
<ul>
<li>Tap:执行选中元素的点击事件</li>
<li>Send Keys:为文本框等对象传值</li>
<li>如果是文本输入元素,就清除文本</li>
</ul>
<p>4.录制脚本</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200323204245958-1360420645.png" alt=""></p>
<p>&nbsp;录制生成的python代码如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># This sample code uses the Appium python client
# pip install Appium</span>-Python-<span style="color: rgba(0, 0, 0, 1)">Client
# Then you can paste </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)"> into a file and simply run with Python

</span><span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> appium import webdriver

caps </span>=<span style="color: rgba(0, 0, 0, 1)"> {}
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">platformName</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Android</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">platformVersion</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">9.0.0</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">deviceName</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Mi_Note_3</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">appPackage</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.antfortune.wealth</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">appActivity</span><span style="color: rgba(128, 0, 0, 1)">"</span>] = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.alipay.mobile.quinox.LauncherActivity</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">resetKeyboard</span><span style="color: rgba(128, 0, 0, 1)">"</span>] =<span style="color: rgba(0, 0, 0, 1)"> True
caps[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">unicodeKeyboard</span><span style="color: rgba(128, 0, 0, 1)">"</span>] =<span style="color: rgba(0, 0, 0, 1)"> True

driver </span>= webdriver.Remote(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://localhost:4723/wd/hub</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">, caps)

el1 </span>= driver.find_element_by_id(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.antfortune.wealth.login:id/login_main_button</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
el1.click()
el2 </span>= driver.find_element_by_id(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">com.alipay.mobile.accountauthbiz:id/auth_login_btn</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
el2.click()

driver.quit()</span></pre>
</div>
<p>5.在pycharm中建立项目将代码粘入,在运行之前,还需通过pip命令安装pip install Appium-Python-Client依赖包</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200323210725891-1245244901.png" alt=""></p>
<p>&nbsp;最后,记一个我在这些过程中遇到的问题(现已解决)</p>
<p>&nbsp;在Appium-desktop中运行Start Session时,出现</p>
<p><img src="https://img2020.cnblogs.com/blog/1693539/202003/1693539-20200323213644698-1358111097.png" alt=""></p>
<p>&nbsp;解决方法:在开发者模式下,打开usb调试功能和use模拟点击,两个都要打开,此时再重新运行,即可解决</p><br><br>
来源:https://www.cnblogs.com/jyd0124/p/appium.html
頁: [1]
查看完整版本: Python+Appium实现自动化测试