android真機自動化測試

appium執行用例時報錯問題:html

 

問題解析:linux

通常該種狀況都是由於來鏈接了多個設備,驗證辦法:cmd->執行adb devices  看結果是不是多個devices ,若是是這個問題,停掉多餘設備,剩餘一個設備就能夠了。android

 

android真機自動化測試web

一、appium相關安裝(eclipse下)見http://www.cnblogs.com/wangcp-2014/p/5717589.html參考selenium的安裝shell

  1.1appium的安裝除了selenium安裝的東西外 還須要再切換到E:\Python\Scripts 目錄下cmd輸入:pip install Appium-Python-Client  安裝appium clientsession

  1.2 eclipse下導入開發框架項目---設置appium---項目->properties->PyDev-Interpreter/Grammar中的click here to configure an interpreter not listed中進行設置,進入以後,Forced Builtins選項,點擊new,輸入appium保存,點擊apply,點擊肯定,重啓下eclipse,okapp

二、android-sdk下載及安裝框架

  2.1 android-sdk下載及安裝eclipse

  2.2 配置環境變量測試

       ANDROID_HOME=android-sdk的安裝目錄

       PATH=.; %ANDROID_HOME%\tools; ; %ANDROID_HOME%\platform-tools;。。。

  2.3 經過cmd下輸入adb驗證配置是否正確

  2.4 啓動adb  cmd下輸入adb start-server 啓動adb 返回沒有報錯就是啓動成功了 (報錯時查看端口是否被佔用,結束佔用該端口的進程就能夠了)

  2.5 鏈接測試手機真機,cmd輸入adb devices 驗證 devices鏈接成功

   補充:cmd下輸入adb shell  進入android的linux系統

三、appium配置

  

四、運行appium不報錯,進入debug狀態證實配置沒問題了

五、eclipse寫測試用例代碼

# -*- coding: utf-8 -*-
import os
from appium import webdriver
import unittest
from time import sleep

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

class MyClass(unittest.TestCase):
    '''
    classdocs
    '''

    def setUp(self):
        '''
        Constructor
        '''
#################
        desired_caps = {}
        desired_caps['deviceName'] = 'device'  
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.3'  
        desired_caps['app'] = PATH('D:\\Workspace\\zufangdai_app_appium_test\\yuefuApp\\agent4.0.0_test.apk')
        desired_caps['appPackage'] = 'com.bj58.finance.agent'  
        desired_caps['appActivity'] = 'com.bj58.finance.agent.LuncherActivity' 
        desired_caps['waitappActivity'] = 'com.bj58.finance.agent.activity.LoginActivity'
        desired_caps['unicodeKeyboard'] = 'True'
        desired_caps['resetKeyboard'] = 'True'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    def test_login_success(self):
        self.driver.find_element_by_id("com.bj58.finance.agent:id/login_et_username").send_keys("18612180000")
        self.driver.find_element_by_id("com.bj58.finance.agent:id/login_et_password").send_keys("58shenqi58")
        self.driver.find_element_by_id("com.bj58.finance.agent:id/login_btn_login").click()
        sleep(10)
        self.driver.find_elements_by_xpath("//android.widget.Button[@resource-id='com.bj58.finance.agent:id/item_btn']")
        self.driver.find_element_by_id("com.bj58.finance.agent:id/item_btn").click() 
        sleep(5)
        
        
     def tearDown(self):
         self.driver.quit()
        
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(MyClass)
    unittest.TextTestRunner(verbosity=2).run(suite)

運行結果:

ok

 

appium執行用例時報錯問題:

一、執行時報unknown host service

問題解析:

通常該種狀況都是由於鏈接了多個設備,驗證辦法:cmd->執行adb devices  看結果是不是多個devices ,若是是這個問題,停掉多餘設備,剩餘一個設備就能夠了。

二、輸入框輸入是輸不進去後臺報錯

解決辦法:

    首次運行時會提示讓安裝appium setting 和另外一個與appium運行有關的,點擊贊成就行了,進入手機輸入法會發現多了一個appium。。。。輸入法,而後若是運行時出現輸入框輸不進去東西時,那麼在運行前將輸入法手動切換成appium。。。那個輸入法,而後從新運行用例,輸入問題就解決了

三、Error: Requested a new session but one was in progress

問題分析:appium沒有正常進入debug模式,或者由於設置了預啓動,預啓動的應用session,沒有正常結束,就執行了測試代碼(代碼中還包括了應用的啓動)

解決方法:一、取消預啓動應用選擇

啓動appium後日志顯示正常進入debug模式,再執行測試代碼

相關文章
相關標籤/搜索