wda源碼簡讀

零.前提

首先atx對于UI的操作是基于wda的郭厌。
因此對應(yīng)atx和wda來研究一下他們是如何獲取UI的茴肥,又是如何對UI控件進(jìn)行操作的择吊。
哪些控件可以用哪些api進(jìn)行操作长酗。

一.ios_webdriveragent.py

1.啟動關(guān)閉app
  d.start_app("Buddle ID")   #啟動app
  d.stop_app()               #關(guān)閉app
2.鏈接狀態(tài)
  d.status()                 
  {u'ios': {u'simulatorVersion': u'10.0.2'}, u'state': u'success', u'os': {u'version': u'10.0.2', u'name': u'iOS'}, u'build': {u'time': u'Oct 13 2016 10:27:46'}}
  返回的是一個元組,我們可以獲取任意值腌逢,如圖:
Paste_Image.png
3.獲取屏幕尺寸
  d.display          #Get screen width and height
                     #屬性函數(shù)(property) :http://python.jobbole.com/80955/
Paste_Image.png
4.BundleID的獲取
  d.bundle_id      

5.能取到session
   s = d._session     #發(fā)現(xiàn)app啟動后芒划,atx 調(diào)用wda接管session :self._session = self._wda.session(bundle_id)
                      #這樣,我們就可以進(jìn)一步操作session的一些東西了
   demo:
   s.window_size()    #返回   Size(width=375, height=667)
   
6.屏幕尺寸比例
   d.scale            #屏幕: width/height
                      #作用:click函數(shù)調(diào)用這個函數(shù)來計算一個button的中心點(diǎn)蚤蔓,因為要點(diǎn)擊在中心的坐標(biāo)上

7.Rotation 屏幕方向(橫屏 還是 豎屏)
   d.Rotation         #返回int型
   設(shè)備會旋轉(zhuǎn)卦溢,橫屏1   豎屏0  
   源碼:
   #rs = dict(PORTRAIT=0, LANDSCAPE=1, UIA_DEVICE_ORIENTATION_LANDSCAPERIGHT=3)return 
   rs.get(self._session.orientation, 0)

8.d.click(x, y)
   d.click(120, 424)   #點(diǎn)擊屏幕坐標(biāo)點(diǎn)(x,y)
                       #python -m atx gui --serial http://100.80.29.124:8100   啟動ATX 的 UI工具 ,獲取坐標(biāo)點(diǎn)
   s = d._session      # tap的坐標(biāo)要做轉(zhuǎn)換才能用昌粤,跟click的坐標(biāo)要進(jìn)行換算
   s.tap(120, 424)     #raw_size = self._session.window_size()    
                       #self.__scale = min(self.display) / min(raw_size)rx, ry = x/self.__scale, y/self.__scale

9.home鍵
   d.home()    
   d._wda.home()  

10.截屏
   d.screenshot("mm.png")   

二.image.py

三.wda.py

1.selector介紹
   self._base_url = base_url
   self._text = unicode(text)   if text else None
   self._class_name = unicode(class_name)  if class_name else None
   self._xpath = unicode(xpath) if xpath else None

1.text獲取控件
#查找滑動
d(text=u"發(fā)現(xiàn)城市特色酒店").scroll()      #滑動直到找到value=“發(fā)現(xiàn)城市特色酒店”的地方

2.class_name獲取控件
d(class_name="StaticText")[0].click()

3.xpath獲取控件
d(xpath="http://XCUIElementTypeButton[@label='lblseven']").click()    #用@name也行


4.baseurl
   暫時不知道有什么用

附錄:
[wda支持元素類型]

 xcui_element = [    
  'Any',    'Other',    'Application',    'Group',    'Window',   
  'Sheet',    'Drawer',    'Alert',    'Dialog',    'Button',    'RadioButton',    
  'RadioGroup',    'CheckBox',    'DisclosureTriangle',    'PopUpButton',    
  'ComboBox',    'MenuButton',    'ToolbarButton',    'Popover',    'Keyboard',    
  'Key',    'NavigationBar',    'TabBar',    'TabGroup',    'Toolbar',    'StatusBar',   
 'Table',    'TableRow',    'TableColumn',    'Outline',    'OutlineRow',    'Browser',    
  'CollectionView',    'Slider',    'PageIndicator',    'ProgressIndicator',    
  'ActivityIndicator',    'SegmentedControl',    'Picker',    'PickerWheel',    
  'Switch',    'Toggle',    'Link',    'Image',    'Icon',    'SearchField',    'ScrollView',   
   'ScrollBar',    'StaticText',    'TextField',    'SecureTextField',    'DatePicker',    
  'TextView',    'Menu',    'MenuItem',    'MenuBar',    'MenuBarItem',    'Map',    'WebView',    
  'IncrementArrow',    'DecrementArrow',    'Timeline',    'RatingIndicator',   
   'ValueIndicator',    'SplitGroup',    'Splitter',    'RelevanceIndicator',    
  'ColorWell',    'HelpTag',    'Matte',    'DockItem',    'Ruler',    'RulerMarker',    'Grid',    
  'LevelIndicator',    'Cell',    'LayoutArea',    'LayoutItem',    'Handle',    'Stepper',    'Tab'
]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末既绕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涮坐,更是在濱河造成了極大的恐慌凄贩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袱讹,死亡現(xiàn)場離奇詭異疲扎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捷雕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門椒丧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人救巷,你說我怎么就攤上這事壶熏。” “怎么了浦译?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵棒假,是天一觀的道長。 經(jīng)常有香客問我精盅,道長帽哑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任叹俏,我火速辦了婚禮妻枕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粘驰。我一直安慰自己屡谐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布蝌数。 她就那樣靜靜地躺著愕掏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪籽前。 梳的紋絲不亂的頭發(fā)上亭珍,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天敷钾,我揣著相機(jī)與錄音,去河邊找鬼肄梨。 笑死阻荒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的众羡。 我是一名探鬼主播侨赡,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粱侣!你這毒婦竟也來了羊壹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤齐婴,失蹤者是張志新(化名)和其女友劉穎油猫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柠偶,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡情妖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诱担。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毡证。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔫仙,靈堂內(nèi)的尸體忽然破棺而出料睛,到底是詐尸還是另有隱情,我是刑警寧澤摇邦,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布恤煞,位于F島的核電站,受9級特大地震影響涎嚼,放射性物質(zhì)發(fā)生泄漏阱州。R本人自食惡果不足惜挑秉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一法梯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犀概,春花似錦立哑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至产喉,卻和暖如春捂掰,著一層夾襖步出監(jiān)牢的瞬間敢会,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工这嚣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸥昏,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓姐帚,卻偏偏與公主長得像吏垮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子罐旗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容