<thead id="jxdzp"><address id="jxdzp"><pre id="jxdzp"></pre></address></thead>

<em id="jxdzp"><span id="jxdzp"></span></em>

    <listing id="jxdzp"><nobr id="jxdzp"><meter id="jxdzp"></meter></nobr></listing>

      <address id="jxdzp"></address>
      <noframes id="jxdzp"><form id="jxdzp"><th id="jxdzp"></th></form>
      <noframes id="jxdzp"><form id="jxdzp"><th id="jxdzp"></th></form>

          訂閱本欄目 RSS您所在的位置: 深山工作室 > python > 正文

          Appium元素定位方式之android_uiautomator定位

          2022/9/23 17:04:58 字體: 瀏覽 1224

          1. android_uiautomator定位
            相當于使用 UiAutomator Api 去遞歸地搜索元素(Android 專屬),可以說android uiautomator是終極定位方式,有的時候一些元素不能夠很好的定位時,那么就需要采用android uiautomator去定位,他是一種非常強有力的定位方式,原理是通過android 自帶的android uiautomator的類庫去查找元素。appium對android 的uiautomator進行了封裝,該方法的參數為UiSelector類定位元素的表達式:new UiSelector().屬性('屬性值'),實例化一個UiSelector對象,然后通過實例接口調用。
            AndroidUIAutomator是一個強有力的元素定位方式,它是通過Android UIAutomator類庫去找元素,可以選擇resourceId、text、className、description作為傳入的字符串。

          1.1 android_uiautomator之text文本定位語法
            1) 使用text文本定義
              loc_text = 'new UiSelector().text("登錄/注冊")'
             driver.find_element_by_android_uiautomator(loc_text).click()
            2) uiautomator text模糊定位
              文本比較長的時候,可以用textContains模糊匹配,通過text的部分信息就能夠進行定位,我們直接看代碼:
              loc_text = 'new UiSelector().textContains("登錄/注冊")'
             driver.find_element_by_android_uiautomator(loc_text).click()
             在上面的代碼中我們只是將.text()的方法變成了.textContains(),在方法中傳入模糊的數據就好??吹竭@里是否有人思考過一個問題,既然有類似的模糊尋找,那么有沒有像正則表達式一樣的查找呢?答案是肯定的,看我們下面的方法。

            3) textMatches 正則匹配查找
          textMatches故名思義就是通過正則的來進行查找定位,也是通過text的屬性來進行正則匹配,我們直接看代碼:
             loc_text = 'new UiSelector().textMatches("^登錄/.*")'
             driver.find_element_by_android_uiautomator(loc_text).click()
            4) textStartsWith是以某個文本開頭來匹配
              new UiSelector().textStartsWith("以text文本開頭")
              loc_text = 'new UiSelector().textStartsWith("登錄")'
              driver.find_element_by_android_uiautomator(loc_text).click()

          1.2 android_uiautomator之resourceId定位
          resourceId定位和appium封裝好的id定位是一樣的,只是這里將寫法變成了uiautomator的寫法而已。

          1) resourceId定位
              oc_id = 'new UiSelector().resourceId(" com.wm.dmall:id/net_image_view ")'
              driver.find_element_by_android_uiautomator(loc_id).click()
              通過上面的代碼和之前的代碼對比大家可能發現其實他們前面都是一樣的,只是在定位的時候發生了一些變化,text變換成了resourceId即可,也就是頁面對象屬性的信息進行變更了,其他方法都是一樣。
          2) resourceIDMatches 定位
          通過id進行正則匹配定位
              loc_id = 'new UiSelector().resourceIdMatches(".+net_image_view ")'
              driver.find_element_by_android_uiautomator(loc_id).click()
              1.3 android_uiautomator之className定位
              頁面上的class屬性一般不唯一,多半用在復數定位時候。比如通過class屬性定位'同意'這個按鈕下標就是1。

          1) className定位
          # className復數定位
          loc_class = 'new UiSelector().className("android.widget.TextView")'
          driver.find_elements_by_android_uiautomator(loc_class)[1].click()

          20 uiautomator classNameMatches定位
          通過className正則匹配進行定位:

          loc_class = 'new UiSelector().classNameMatches (".*widget.TextView")'
          driver.find_elements_by_android_uiautomator(loc_class)[1].click()
          1.4 android_uiautomator之description定位


          loc_id = 'new UiSelector().
          description("多點")'
          driver.find_element_by_android_uiautomator(loc_id).click()
          1.5 android_uiautomator之組合定位

          1)id與text屬性組合
          id_text = 'resourceId("com.wm.dmall:id/funcTitle").text("待支付")'
          driver.find_element_by_android_uiautomator(id_text).click()
          2)class與text屬性組合
          class_text = 'className("android.widget.TextView").text("待支付")'
          driver.find_element_by_android_uiautomator(class_text).click()
          3)父子關系定位
          son = 'resourceId("com.wm.dmall:id/container").childSelector(text("我的"))'
          driver.find_element_by_android_uiautomator(son).click()
          4)兄弟定位fromParent
          有時候父元素不好定位,但是跟他相鄰的兄弟元素很好定位,這時候就可以通過兄弟元素,找到同一父級元素下的子元素。

          brother = 'resourceId("com.wm.dmall:id/nav_item_laber_tv").fromParent(text("我的"))'
          driver.find_element_by_android_uiautomator(brother).click()

          信息來源網址:https://www.cnblogs.com/dy99/p/14287543.html

          相關閱讀
          ASP鏈接地址欄參數的加密
          02. 解決只能運行asp頁面不能運行數據庫錯誤
          CSS中的行為——expression的研究
          ASP.NET常用的三十三種實用代碼(下)
          asp自定義格式化日期函數
          網頁制作,改變你的思維方
          CSS代碼格式化和壓縮化
          鼠標經過表格列時變色
          共有0條關于《Appium元素定位方式之android_uiautomator定位》的評論
          發表評論
          正在加載評論......
          返回頂部發表評論
          呢 稱:
          表 情:
          內 容:
          評論內容:不能超過 1000 字,需審核,請自覺遵守互聯網相關政策法規。
          驗證碼: 驗證碼 
          網友評論聲明,請自覺遵守互聯網相關政策法規。

          您發布的評論即表示同意遵守以下條款:
          一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會、集體和公民的合法權益;
          二、不得發布國家法律、法規明令禁止的內容;互相尊重,對自己在本站的言論和行為負責;
          三、本站對您所發布內容擁有處置權。

          更多信息>>欄目類別選擇
          百度小程序開發
          微信小程序開發
          微信公眾號開發
          uni-app
          asp函數庫
          ASP
          DIV+CSS
          HTML
          python
          更多>>同類信息
          Android移動端自動化測試:使用UIAutomatorViewer與Selenium定位元素
          python通過代碼修改pip下載源讓下載庫飛起
          python里面requests.post返回的res.text還有其它的嗎
          windows7環境下安裝配置jdk
          python對微信操作要用到這兩個庫wxpy與itchat
          8種Python字符串拼接的方法,你知道幾種
          更多>>最新添加文章
          dw里面查找替換使用正則刪除sqlserver里面的CONSTRAINT
          Android移動端自動化測試:使用UIAutomatorViewer與Selenium定位元素
          抖音直播音掛載小雪花 懂車帝小程序
          javascript獲取瀏覽器指紋可以用來做投票
          火狐Mozilla Firefox出現:無法載入您的Firefox配置文件 它可能已經丟失 或是無法訪問 問題解決集合處理辦法
          在Android、iOS、Windows、MacOS中微信小程序的文件存放路徑
          python通過代碼修改pip下載源讓下載庫飛起
          python里面requests.post返回的res.text還有其它的嗎
          更多>>隨機抽取信息
          以前的QQ強聊不管了,這個是非常管用的QQ強聊
          JS操作Cookie記錄
          頁面文字變色、變大、還原
          Word圖片導出方法
          一張背景實現自適應九宮格
          連云港華夏國際旅行社
          88国产精品视频一区二区三区