appium環境搭建及項目實戰


 

 

手機端自動化環境搭建比其他自動化環境搭建較為復雜,安裝工具有點多,也會有很多坑,安裝工具一定注意版本號對應問題。

 

一、我的電腦環境:win7  64位,安卓測試機4.4.2版本,Python3.6,appium1.4,java1.7

二、環境安裝:

                              java環境安裝安裝就不講了

                      (1)安裝appium,地址:  https://bitbucket.org/appium/appium.app/downloads/

                                  解壓后一步步安裝,桌面會有appium的快捷方式

                                   appium安裝好后,找到這個文件目錄D:\andriod\anzhaung\appiumZIP\Appium\node_modules\.bin(這是我的安裝目錄)                                  

                                  將上面的地址添加到環境變量path下

                                   打開cmd,輸入appium-doctor,檢查環境是否OK,出現如下圖所示,說明環境OK                                          

                                      

                      (2)   安裝Android SDK,地址: http://dl.google.com/android/installer_r23.0.2-windows.exe

                                  安裝完成后添加環境變量,在系統變量新建:ANDROID_HOME,對應變量值為:D:\android(sdk安裝路徑)                 

                                  在系統變量找到path編輯,添加下面倆個變量: ;%ANDROID_HOME%\platform-tools;ANDROID_HOME%\tools;

                      (3)雙擊啟動SDK Manager.exe 程序,打開tool,再打開options,出現下面界面,標記的都要填上,這樣就會自動更新

                                            

                                          

 

                     點擊close之后,按照下圖操作:

                               

                                         

 

                                        

                                      

 

 

                                    (4)Appium是用.net開發的,所以需要安裝.net framework4.5,下載地址:  https://www.microsoft.com/zhcn/download/details.aspx?id=3065332

                                    (5)安裝Appium-Python-Client

                                               安裝Python時,我已經裝好pip了,需要pip安裝包的找我要,打開cmd命令,輸入:

                                                pip install Appium-Python-Client

 

前面四步驟已經把環境搭建好了,第6步是方便以后寫腳本獲取apk包名和launcherActivity

 

                                     (6)在sdk安裝目錄下,找aapt通工具的路徑:D:\andriod\build-tools\19.1.0\aapt.exe,將其添加到環境變量,打開cmd,輸入aapt,出現下圖則正確

                                                 

 

                                      

三、實戰:自動打開手機谷歌瀏覽器,並在搜索框輸入商品的鏈接地址,進行搜索

          准備工作:1、4.4安卓真機,此機下載谷歌瀏覽器(會自動選擇對應的版本,我這里安裝時自動給我安裝了58版本的)

                                2、webdriver驅動安裝,58版本的瀏覽器對應的驅動是v2.29(需要驅動的找我要),下載好驅動放在appium安裝目錄的以下路徑文件夾下面:D:\andriod\anzhaung\appiumZIP\Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win(這是我的安裝目錄)

                                3、在pc端下載谷歌瀏覽器的apk(我存放的位置:D:\apk\Chrome_320208401.apk)

                                4、打開appium,點擊左上角機器人,配置如下圖

                                              

                            5、(1)在pc端谷歌瀏覽器輸入:chrome://inspect,這是打開遠程調試工具,如果你的手機與電腦是連接正常的,會顯示你的手機名稱,這時點擊inpect,電腦上也會出現與你手機相同的界面,如果出現空白的頁面,你就現需要翻牆了(我翻牆的)

                                  (2)在Android  SDK安裝目錄下找到D:\andriod\tools\uiautomatorviewer.bat,雙擊打開,這個也是定位元素用的

                                   說明:1和2這倆個工具都是用來定位元素的,1工具和selenium中定位一模一樣,但是它無法定位到瀏覽器彈出的提示或其他(我在登陸的時候,瀏覽器彈出詢問我是否記住密碼,1工具就無法定位,我用2工具就可以定位到,才可以繼續下一步操作),我是倆者結合使用,因為之前做selenium的,所以大部分都是用1工具去定位,定位不到的才去用2工具,而2工具也有缺點,它無法定位到webview界面里面的內容,1工具可以,所以還是結合使用吧

         開始編寫腳本,直接看代碼:

                               

from appium import webdriver

import time 

desired_caps = {}

desired_caps['platformName'] = 'Android'                           這里是android的apk

#desired_caps['platformVersion'] = '5.0'
 desired_caps['deviceName'] = 'NXTDU16814008569'            這是手機設備的名稱,通過adb devices命令查看,也可通過該方法判斷手機與電腦是否正常連接上

 

 

#desired_caps['appPackage'] = 'com.android.chrome '

#desired_caps['browserName'] = 'Chrome'

# desired_caps['unicodeKeyboard']= True                               

# desired_caps['resetKeyboard']=True

#整個業務流程我循環倆千次,因為公司需要大量數據以圖表形式展現給客戶,如果人工去點點點,。。。。。。。。。。
for m in range(1,2000):
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
driver.get('http://shopmprt2q.wemartx.com/product?id=G00EKFFNHC')
time.sleep(3)
#點擊加入購物車
driver.find_element_by_xpath('//*[@id="wmContainer"]/div[3]/div/div[1]/button/div/span').click()

time.sleep(3)
#點擊購物車
driver.find_element_by_xpath('//*[@id="wmContainer"]/div[1]/div/div[1]/div[1]/ul/li[2]/a').click()
time.sleep(3)
a=driver.find_elements_by_class_name('wm-button-text')
for i in a:
if i.text=='去結算':
i.click()
break
#點擊個人中心進行登錄
# driver.find_element_by_xpath('//*[@id="wmContainer"]/ul/li[1]/div/div[1]/div[1]/ul/li[1]/a/i').click()
# time.sleep(3)
driver.find_element_by_id('js-ws-mobile-no').send_keys('*******')
driver.find_element_by_id('js-ws-password').send_keys('********')
b=driver.find_elements_by_class_name('wm-button-container')
for i in b:
if i.text=='登錄':
i.click()
break
time.sleep(3)
cont=driver.contexts
#切換到native_app
driver.switch_to.context(cont[0])
time.sleep(3)
#點擊瀏覽器彈出的提示
driver.find_element_by_id('com.android.chrome:id/button_primary').click()
#切回到webview
driver.switch_to.context(cont[1])
time.sleep(3)
#點擊個人中心
driver.find_element_by_xpath('//*[@id="wmContainer"]/div/div[1]/div[1]/div[1]/ul/li[1]/a/i').click()
time.sleep(3)
#點擊待付款
driver.find_element_by_xpath('//*[@id="wmContainer"]/div[2]/div/div[2]/div[2]/div[1]').click()
time.sleep(5)
#點擊立即支付
driver.find_element_by_xpath('//*[@id="wmContainer"]/div[2]/div/div[1]/div/div[3]/div[2]/button[1]').click()
 
        

 

          

          運行上面紅色部分的代碼此時就可以在手機上看到自動操作,並自動在谷歌瀏覽器輸入地址啦!注釋的部分是之前沒在appium工具上配置寫的,這些注釋的可以不要。

在摸索的過程中,你會發現網上有很多關於參數配置,什么appPackage,appActivity,因為我直接在appium工具里配置了,這里不需要寫了,如果要在代碼中配置,這倆個參數在哪查看呢?打開cmd命令,輸入:aapt dump badging D:\apk\Chrome_320208401.apk,就會看到下圖,

                                     

 

acticity參數名正常情況下,上圖你往下翻找到launch-activity,后面就是該名了,因為我做的這個谷歌apk我沒找到,所以我放棄從代碼中配置,直接從appium工具里去配置,它會自動填寫這些


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM