這些appium常用元素定位技巧,你掌握了幾種?
今天跟大家分享下Appium的元素定位的一些小技巧。
Appium對於處理原生的android應用直接透過uiautomatorviewer.bat這個工具來獲取元素定位。
在開始appium元素定位的話題之前,首先讓我們瞭解下appium的一些基礎知識:
一、測試物件
appium 是一個自動化測試開源工具,支援iOS和 Android平臺上的原生應用,web應用和混合應用。
移動原生應用: 單純用ios或者android開發語言編寫的、針對具體某類移動裝置、可直接被安裝到裝置裡的應用,一般可透過應用商店獲取;
移動web應用: 使用移動瀏覽器訪問的應用(appium支援iOS上的Safari和Android上的 Chrome),不需要下載到裝置上,而是透過瀏覽器直接訪問;
混合應用: 同時使用網頁語言與程式語言開發,透過應用商店區分移動作業系統分發,使用者需要安裝使用的移動應用。
二、支援平臺及語言
appium是跨平臺的,支援OSX,Windows以及Linux系統。它允許測試人員在不同的平臺(iOS,Android)使用同一套API來寫自動化測試指令碼,這樣大大增加了iOS和Android測試套件間程式碼的複用性
appium支援多語言,採用C/S設計模式,只要滿足client能夠傳送http請求給server即可
三、元素定位
1.格式:find_element_by_定位方式(value)
我根據手機自帶的計算器來解釋
透過id定位
透過工具獲取到按鈕的 resource-id
driver.find_element_by_id('resource-id')
例項: driver.find_element_by_id(' com.android.bbkcalculator:id/clear')
透過class定位
透過工具獲取到按鈕的class
driver.find_element_by_class_name('class')
例項: driver.find_element_by_class_name(' android.widget.ImageButton ')
透過text定位
appium1.5及之後的版本廢棄了name屬性(如name=百度一下,需要使用uiautomator的定位方式,使用text的內容)
driver.find_element_by_android_uiautomator("text(\中文\)")
例項:driver.find_element_by_android_uiautomator ("text(\"百度一下\")")
備註:需要確認這個中文是當前頁面唯一值,否則還是定位不到,注意寫法,不是直接把中文複製進去
透過xpath定位
driver.find_element_by_xpath("xpath內容 ")
例項:driver.find_element_by_xpath("//android.widget.FrameLayout/android.widget.ImageButton[4]")
以下方式暫時沒有用到,如果有問題以後會更改
透過accessibility_id
在UI Automator Viewer介面上並沒有找到這個欄位,這個對應的欄位是content-desc
driver.find_element_by_accessibility_id("accessibility_id")
沒有找到例項,要是自己寫自動化的APP碰到了,可以用用
透過css_selector定位(webview)
只適用於webview的html頁面,繼承自webdriver,與pc版本的UI測試一致
driver.find_element_by_css_selector()
透過link_text定位(webview)
只適用於webview容器中的html頁面,繼承自webdriver,與pc版本的UI測試一致
driver.find_element_by_link_text()
透過name定位
只適用於webview容器中的html頁面,繼承自webdriver,與pc版本的UI測試一致
driver.find_element_by_name()
2.定位元素的另一種寫法:find_element(by,value)
find_element_by_方式(value)實際呼叫的都是find_element(by,value)
需要匯入這個包:from selenium.webdriver.common.by import By
例如:定位id為ag2的元素
方式一:driver.find_element_by_id("ag2”)
方式二:driver.find_element(By.ID,"ag2")
這個操作的好處是可以直接把操作的by和value放到一個元組裡,然後呼叫通用方法來傳參獲得元素結果。
cateid=(By.ID,"ag2")
driver.find_element(*cateid).click()
by的操作可以是:
By.ID 相當於by_id
By.CLASS_NAME 相當於by_class_name
By.XPATH 相當於by_xpath
By.NAME 相當於by_name
By.TAG_NAME 相當於by_tag_name
By.CSS_SELECTOR 相當於by_css_selector
By.LINK_TEXT 相當於by_link_text
3.find_elements_by_定位方式(value)返回元素陣列
用法與find_element_by_方式(value)一致,但是返回一個陣列。可以透過陣列的索引來訪問具體的某個結果。
例如:透過class_name定位到多個元素,我想點選第一個元素
driver.find_elements_by_class_name("android.widget.RelativeLayout”)[0].click()
4.返回元素陣列的另一種寫法:find_elements(by,value)
用法與find_element(by,value)一致,但是返回一個陣列。可以透過陣列的索引來訪問具體的某個結果。
例如:透過class_name定位到多個元素,我想點選第一個元素
driver.find_elements(By.CLASS_NAME,"android.widget.RelativeLayout”)[0].click()
5.透過元素定位元素
可以先找到某個元素,然後再進一步定位元素
find_element_by_class_xpath(“xxx”).find_element_by_name(“yyy")
四、元素操作
找到元素後可以對元素進行的操作,例如上面講的進一步定位元素
1.click()
//點選操作
也可以用tab實現點選操作
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ae8").click()
2.clear()
//清空輸入框內容
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").clear()
3.send(xx)
//輸入框內輸入內容
driver.find_element_by_id("com.wuba.zhuanzhuan:id/ij").send_keys("test content")
4.text
//獲得元素的text內容
print(driver.find_element_by_xpath(" //android.widget.LinearLayout[1]//xxx").text)
四、總結
1、Appium跨平臺,支援Android和IOS自動化測試。
2、Appium支援多語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure等等
3、支援原生應用,web應用和混合應用
4、僅僅支援UI測試
歡迎加入 51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ 群: 755431660
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2286086/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- appium元素定位APP
- Appium常用操作之「元素定位、swipe 滑屏操作」APP
- 請教下,appium 中用了些 airtest 影像定位,導致 appium 定位失敗找不到元素APPAI
- 這些css高階技巧,你知道幾個呢?CSS
- 百億資料量下,掌握這些Redis技巧你就能Hold全場Redis
- 這些javascript面試題,你做對了幾道?JavaScript面試題
- java web開發這些細節你真的掌握了嗎JavaWeb
- 這些高階的函式技術,你掌握了麼函式
- 做java的你,這些英文單詞都掌握了嗎?Java
- 【超詳細】Linux常用命令,這些你需要掌握!Linux
- 學習Python常用的幾大軟體,你掌握了嗎?Python
- 『與善仁』Appium基礎 — 20、Appium元素定位APP
- spring 掌握這些就夠了Spring
- 史上最全的Word技巧大全 掌握這些你也能成為Word高手
- 初學機器學習的你,是否掌握了這樣的Linux技巧?機器學習Linux
- 同事改Bug飛快,原來掌握了這些程式碼Debug技巧
- 百億資料量下,掌握這些Redis技巧你大概就穩住了全場Redis
- 短視訊如何運營,教你這些技巧,讓你掌握流量密碼!密碼
- 掌握這幾種開發語言,讓你玩轉人工智慧人工智慧
- 數字營銷的這四種型別,你掌握了嗎?型別
- Appium自動化(9) - appium元素定位的快速入門APP
- 初學Java,這些框架你要掌握!Java框架
- selenium常用元素定位方式
- APPIUM-Android自動化元素定位方式APPAndroid
- Appium學習筆記4_元素定位方法APP筆記
- 這些喜聞樂見的Java面試知識點,你都掌握了嗎?Java面試
- Python必備基礎:這些NumPy的神操作你都掌握了嗎?Python
- 企業網站建設技巧你掌握了嗎?網站
- 『與善仁』Appium基礎 — 17、元素定位工具(一)APP
- 『與善仁』Appium基礎 — 18、元素定位工具(二)APP
- 『與善仁』Appium基礎 — 19、元素定位工具(三)APP
- 掌握了這幾個 Linux 命令可以讓你工作效率提升三倍Linux
- 這些必會的計算機網路知識點你都掌握了嗎計算機網路
- iOS開發幾年了,你清楚OC中的這些東西麼iOS
- 學習Linux,這些命令你都掌握了嗎?Linux
- js獲取頁面dom元素的幾種常用方式JS
- 掌握這些Linux常用命令,工作更輕鬆Linux
- 這些辦公技巧值得你來學習