wda源码简读

零.前提

首先atx对于UI的操作是基于wda的。
因此对应atx和wda来研究一下他们是如何获取UI的,又是如何对UI控件进行操作的。
哪些控件可以用哪些api进行操作。

一.ios_webdriveragent.py

1.启动关闭app
  d.start_app("Buddle ID")   #启动app
  d.stop_app()               #关闭app
2.链接状态
  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
                     #属性函数(property) :http://python.jobbole.com/80955/
Paste_Image.png
4.BundleID的获取
  d.bundle_id      

5.能取到session
   s = d._session     #发现app启动后,atx 调用wda接管session :self._session = self._wda.session(bundle_id)
                      #这样,我们就可以进一步操作session的一些东西了
   demo:
   s.window_size()    #返回   Size(width=375, height=667)
   
6.屏幕尺寸比例
   d.scale            #屏幕: width/height
                      #作用:click函数调用这个函数来计算一个button的中心点,因为要点击在中心的坐标上

7.Rotation 屏幕方向(横屏 还是 竖屏)
   d.Rotation         #返回int型
   设备会旋转,横屏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)   #点击屏幕坐标点(x,y)
                       #python -m atx gui --serial http://100.80.29.124:8100   启动ATX 的 UI工具 ,获取坐标点
   s = d._session      # tap的坐标要做转换才能用,跟click的坐标要进行换算
   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"发现城市特色酒店").scroll()      #滑动直到找到value=“发现城市特色酒店”的地方

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

3.xpath获取控件
d(xpath="//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'
]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容