第四章 Appium真機運行測試用例講解


     手機自動化測試用例雖然可以在模擬器上運行,可是模擬器畢竟和真機還是有區別的。在第二章我們講到了模擬器上運行測試用例后,我又花了兩天的時間,研究了一下真機運行測試用例。只有在真機上運行,才能真正發現出問題。期間也遇到了不少問題,不過最終還是搞定了,現在先將測試用例真機運行的方法說一下,然后再羅列我遇到的問題。

4.1 真機運行測試用例的方法

一,    打開手機的USB調試模式

不同的手機有不同的方法打開usb調試模式,可是去網上查一下你手機的調試模式打開辦法(http://wenku.baidu.com/view/3077f06c25c52cc58bd6be15.html?re=view)。還有一個可以去網上下載一個“USB調試快捷開關”的應用,將手機的USB調試模式打開。

二,    連接手機到電腦

   將手機用數據線連接到電腦,並授權USB調試模式。查看連接的效果,在cmd下運行命令:adb devices -l 查看UDID,如下圖4.1所示:

 

第四章 <wbr>Appium真機運行測試用例講解
圖4.1 查看手機信息

如果有輸出,就表示連接成功。

三,    啟動Appium服務

   根據查到的UDID啟動appium服務,運行命令:

#>appium -a 127.0.0.1 -p 4723  –U  4ca1558c  --no-reset

-U 參數后面跟的一串字符就是手機的UDID,這個是通過第二步查到的。

 

第四章 <wbr>Appium真機運行測試用例講解

圖4.2 啟動Appium服務

 當程序輸出如上圖信息的時候,表示appium啟動成功,此時便可以運行測試腳本了。

四,    安裝要測試的App

當然我們要需要在測試機上安裝被測試的App,去網上下載最新的眾籌網的App,然后安裝到測試機上。注意要確保安裝的App的版本,手機系統版本,和android Sdk的API版本相同或是兼容。

五,測試腳本的編寫及運行

   真機運行的測試腳本與模擬器上幾乎是相同的,就是有些兒配置不太一樣。具體腳本詳解如下:

#-*- coding: UTF-8 -*-

import os

import time

import unittest

from selenium import webdriver

from lib2to3.pgen2.driver import Driver

from lib2to3.tests.support import driver

 

PATH=lambda p:os.path.abspath(

os.path.join(os.path.dirname(__file__),p)                            

)

global driver

 

class LoginAndroidTests(unittest.TestCase):

    def setUp(self):

        desired_caps={}

        desired_caps['device'] = 'android'

        desired_caps['platformName']='Android'

        desired_caps['browserName']=''

        desired_caps['version']='4.4.2'

        desired_caps['deviceName']='MIUI-KXCCNBF22.0'#這是測試機的型號,可以查看手機的關於本機選項獲得

       

        desired_caps['app'] = PATH('D:\\AndroidAutomation\\AndroidAutoTest\\app\\zhongchou.apk')#被測試的App在電腦上的位置

 

#如果知道被測試對象的apppage,appActivity可以加上下面這兩個參數,如果不知道,可以注釋掉,不影響用例執行

        #desired_caps['appPackage']='com.subject.zhongchou'

        #desired_caps['appActivity']='.ZhongChou'

        self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

       

    def tearDown(self):

        self.driver.quit()

   

    def test_login(self):

        time.sleep(10)

        #點擊“注冊登錄”按鈕       button=self.driver.find_element_by_id("com.subject.zhongchou:id/register_button")

        button.click()

        time.sleep(5)

        #登錄

        name = self.driver.find_element_by_id('com.subject.zhongchou:id/loginnumber_phone')

        name.click()

        name.send_keys('183XXXXXX05')

       

        psd = self.driver.find_element_by_id('com.subject.zhongchou:id/loginnumber_password')

        psd.click()

        psd.send_keys('XXXXXXXX’)

       

        blogin=self.driver.find_element_by_id('com.subject.zhongchou:id/go_numberlogin')

        blogin.click()

        time.sleep(10)

        #此處加上檢測登錄是否成功的代碼

if __name__ == '__main__':

    suite = unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)

    unittest.TextTestRunner(verbosity=2).run(suite)

 

 

另開一個cmd窗口,運行測試腳本(python XXXX.py)即可。此時服務端就會有輸出,程序在手機上運行。打開App后,輸入用戶名和密碼,然后進入應用后停了10秒后關閉App。

注:在測試用例運行過程中,要在手機上安裝Appium Settings,按提示允許安裝就可以了。

4.2  真機運行的時候遇到的問題

(1)電腦連接到手機后,運行adb devices –l無信息輸出?

   電腦連接手機后,一般情況下會提示安裝驅動程序,如果手機較新的話可能不會提示,但是運行adb devices –l后無任何輸出。此時只需要安裝91手機助手或是其他手機管理工具,安裝上相應的驅動程序,再次連接就可以了。

(2)運行程序后提示:WebDriverException: Message: u"A new session could not be created. (Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity)"

    當我從網上學習了腳本的編寫方法后,模擬着寫了一個我自己的測試用例,可是連接到真機后,運行腳本時,在執行過程中出現了上面的錯誤提示,可是程序無法運行。

   在網上查看了一下,找到了問題所在:是程序的'appPackage'和‘appActivity’不正確,查找了解決辦法,有說要反編譯被測試的app,然后查找里面的appactivity。可是反編譯后才發現,里面的東西好多,找不到開始的時候appactivity是哪兒個?只好再找其他的辦法了。

   最后在一個論壇的回復中找到了解決辦法:將setup函數中的兩行代碼注釋掉就可以了。

desired_caps['appPackage']='com.subject.zhongchou'

desired_caps['appActivity']='.ZhongChou'

(3)在程序執行這程中,用Send_keys()函數對輸入框輸入值的時候,無法輸入?

    當我執行測試用例的時候,發現用戶名和密碼無法用send_keys()函數輸入到輸入框中。因為輸入就會打開軟鍵盤,而軟鍵盤上面的布局是九宮格的,點擊一直出錯。

    在網上查了好多辦法,人家都是一用的這個函數啊,為什么到我這就不行了呢?我想到了先切換到數字或是英語輸入模式,然后再輸入,折騰起來很麻煩,還沒有成功。最后才發現,是我自己好傻,安裝了搜狗輸入法的原因,把這個輸入法卸掉后就成功了!

4.3 本章小結

    本章我們講解了如何在真實的手機上運行測試用例,當然我們仍然是以眾籌網App的登錄為例的。通過分步介紹,我們可以一步步地把測試用例在真機上運行起來,這也是我們真正開始我們的自動化測試用例編寫之路之前的准備。環境,Appium API和真機運行方法我們都講解完后,從下一章我們開始,講解具體的測試用例應該如何入手。

 


免責聲明!

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



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