Appium+python自動化學習(二)——定位元素

前言:

定位元素:Appium有兩種方式

1.Appium Inspector

2.uiautomatorviewer


一、Appium Inspector

1、設置 Android Settings



2、啓動 Appium



3、啓動Inspector





4、會遇到的異常:

a.每次啓動都會給你手機上重新安裝一次應用

b.不能用鼠標指定某個元素

c.不能重複刷新,頁面實時更新差


一般不建議使用這個元素定位工具。


二、uiautomatorviewer


1、下載uiautomatorviewer

下載安裝好SDK後,其實自帶了uiautomatorviewer,在tools工具下:



2、啓動uiautomatorviewer

雙擊uiautomatorviewer,並點擊左上角的手機ico,刷新



3、可以根據鼠標在視圖指定元素

a.左邊爲界面視圖

b.右上邊是元素菜單樹

c.右下邊是每個元素的屬性


4、webdriver提供的11種元素定位方法

可以再pycharm上輸入driver.find_element_by自動匹配出來



三、通過屬性定位元素


這裏使用uiautomatorviewer獲取元素,通過id,name.class屬性定位


1、id定位

格式:driver.find_element_by_id("resource-id")

driver.find_element_by_id("com.hundsun.stockwinner.grzq:id/ninecase")



2、name定位

格式:driver.find_element_by_name("text")

driver.find_element_by_name("系統設置")


這裏出現亂碼,還有部分元素name是會變的。所以name 定位元素不準確


3、class定位

格式:driver.find_element_by_class_name("class屬性")

driver.find_element_by_class_name("android.widget.Button")


class元素不是唯一,所以單獨以class定位也是不準確的。


上面爲元素的定位。


三、通過Xpath來定位


1、有id和name的情況

a.可以直接通過上面的元素定位法來定位 driver.find_element_by_id("resource-id")。如果有id或name不唯一,可以通過加下標[1][2]來定位。如:

driver.find_element_by_id('com.wlqq:id/title_left_btn')[1]

b.可通過xpath=(//android.widget.TextView[@resource-id="com.wlqq:id/title_left_btn"])如果同樣有id或name不唯一,也可通過加下標[1][2]來定位。如:

xpath=(//android.widget.TextView[@resource-id="com.wlqq:id/title_left_btn"])[1]

下標表示的是同類的第幾個,不是前面位置的數字。座標前用括號括起來。


2、沒有id和name的情況

a.絕對路徑:

例子:

要定位ImageButton[600,50][720,150] 這裏有七級,絕對路徑需從第一級一級一級找。

xpath= //android.widget.LinearLayout

           /android.widget.FrameLayout

           /android.widget.LinearLayout

           /android.widget.RelativeLayout

           /android.widget.RelativeLayout

           /android.widget.LinearLayout[2]

           /android.widget.ImageButton


b.相對路徑:

相對路徑可以通過距離 需要定位的位置 最近並且很容易準確定位的控件 來參照。一般用text爲不變的或唯一值 id。

兄弟關係:

preceding-sibling:: 找到當前節點前面節點 也就是哥哥節點,following-sibling::找當前節點後面節點 也就是弟弟節點

父子關係:

parent::  或   ..

例子:

通過TextView:錢包,當做軸點,參照節點。

兄弟關係:

xpath=//android.widget.TextView[@text="錢包"]

          /following-sibling::android.widget.LinearLayout

          /android.widget.ImageButton

父子關係:

xpath=//android.widget.TextView[@text="錢包"]

          /parent::android.widget.RelativeLayout

          /android.widget.LinearLayout[2]

          /android.widget.ImageButton

xpath=//android.widget.TextView[@text="錢包"]

          /..

          /android.widget.LinearLayout[2]

          /android.widget.ImageButton







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章