appium執行用例時報錯問題:
問題解析:
一般該種情況都是因為來連接了多個設備,驗證辦法:cmd->執行adb devices 看結果是否是多個devices ,如果是這個問題,停掉多余設備,剩余一個設備就可以了。
android真機自動化測試
1、appium相關安裝(eclipse下)見http://www.cnblogs.com/wangcp-2014/p/5717589.html參考selenium的安裝
1.1appium的安裝除了selenium安裝的東西外 還需要再切換到E:\Python\Scripts 目錄下cmd輸入:pip install Appium-Python-Client 安裝appium client
1.2 eclipse下導入開發框架項目---設置appium---項目->properties->PyDev-Interpreter/Grammar中的click here to configure an interpreter not listed中進行設置,進入之后,Forced Builtins選項,點擊new,輸入appium保存,點擊apply,點擊確定,重啟下eclipse,ok
2、android-sdk下載及安裝
2.1 android-sdk下載及安裝
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系統
3、appium配置
4、運行appium不報錯,進入debug狀態證明配置沒問題了
5、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執行用例時報錯問題:
1、執行時報unknown host service
問題解析:
一般該種情況都是因為連接了多個設備,驗證辦法:cmd->執行adb devices 看結果是否是多個devices ,如果是這個問題,停掉多余設備,剩余一個設備就可以了。
2、輸入框輸入是輸不進去后台報錯
解決辦法:
首次運行時會提示讓安裝appium setting 和另一個與appium運行有關的,點擊同意就好了,進入手機輸入法會發現多了一個appium。。。。輸入法,然后如果運行時出現輸入框輸不進去東西時,那么在運行前將輸入法手動切換成appium。。。那個輸入法,然后重新運行用例,輸入問題就解決了
3、Error: Requested a new session but one was in progress
問題分析:appium沒有正常進入debug模式,或者因為設置了預啟動,預啟動的應用session,沒有正常結束,就執行了測試代碼(代碼中還包括了應用的啟動)
解決方法:1、取消預啟動應用選擇
啟動appium后日志顯示正常進入debug模式,再執行測試代碼