Appium之Hybrid App自動化

appium的原理:針對於hybrid的app,appium基於selendroid框架實現。而selendroid框架又是基於instrumentation框架實現的 可見,appium自己是藉助於其它框架控制appweb

元素識別工具 inspector:chrome

  chrome inspector for selendroid app

  UIautomatorviewer for UIautomator框架

 

自動化腳本實現:在頁面裏搜索一個關鍵詞,並驗證和預期一致工具

Appium的配置、啓動測試

配置:Automation Name:選擇selendroidui

配置界面第1行:App Path:經過文件路徑選擇被測試的包url

代碼示例:spa

#coding:utf8
import time,unittest from appium import webdriver class MyTestCase(unittest.TestCase): def setUp(self): #定義初始化的屬性信息,這個和Native APP測試的區別是多了1個「automationName」
        self.desired_caps={} self.desired_caps['platformName']=''#指定平臺
        self.desired_caps['platformVersion']=''#和Appium裏設置的同樣
        self.desired_caps['deviceName']=''#指定須要控制的設備,在控制檯中輸入adb devices 就會出現deviceName
        self.desired_caps['appPackage']=''#被測試程序的packageName,在控制檯中輸入adb logcat | grep(findstr) START
        self.desired_caps['appActivity']=''#packageName中/後面的就是這個
        self.desired_caps['unicodeKeyboard']='True'#更改測試機的輸入法
        self.desired_caps['resetKeyboard']='True'#將更改後的輸入法還原爲機器原來的輸入法,值爲false則不還原
        self.desired_caps['automationName']='Selendroid'# 相對於native_app多了這一個配置項
        #得到操做程序的句柄,用Remote實現
        #4723能夠在啓動APPium時,看到
        self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) def test_Search(self): #Locate定位輸入框
        input=self.driver.find_element_by_id('url') #Operate操做元素
        input.send_keys('http://wap.sougou.com') searchbutton=self.driver.find_element_by_id('searchbutton') searchbutton.click() time.sleep(5) # Switch 切換上下文,因爲此時界面變成了一個HTML5頁面,因此須要切換
        # 打印出當前上下文所包含的內容,結果:[u'NATIVE_APP',u'WEBVIEW_0']
        print self.driver.contexts self.driver.switch_to.context('WEBVIEW_0')#切換到WEBVIEW,切換後須要用WEBVIEW的定位方式,和WEB系統定位是同樣的
        print self.driver.current_context#打印結果:WEBVIEW_0
        time.sleep(5) #定爲WEB輸入框
        webinput=self.driver.find_element_by_xpath('balba') webinput.click() webinput.send_keys('mooc') websearchbutton=self.driver.find_element_by_xpath('sldkflj') websearchbutton.click() time.sleep(5) #檢驗查詢結果
        #驗證第一條結果顯示了
        firstresult=self.driver.find_element_by_xpath('balabala') print firstresult self.assertTrue(u'中國大學' in firstresult.text) # 驗證「中國大學」這幾個字包含在firstresult.text裏面
        #切換會NATIVE狀態下
        self.driver.switch_to.context('NATIVE_APP') def tearDown(self): self.driver.quit()

*** 經常使用API介紹 ***code

contexts        輸出當前上下文,用於切換操做對象

switch_to.context()   入參是contexts返回的其中一個值,用於選擇操做對象

assertTrue(「」 in 「」)

current_context    print self.driver.current_context 打印當前操做對象

 

*** END

相關文章
相關標籤/搜索