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模式,再執行測試代碼