親愛的小伙伴們,Node.js結合selenium做web自動化測試第四課的內容整理來了,今天介紹的是元素定位的八種方法
首先為大家介紹的就是定位元素的寫法跷跪,這個大家應該并不陌生,上一節(jié)課的程序里有用到,不知道細心的同學有沒有發(fā)現(xiàn)這里有兩種寫法
兩種寫法效果一樣脖苏,至于你想御用哪一個,還是那句話,自己開心就好仓坞,我們的重點是,怎么來定位元素腰吟,下面无埃,有請八個佳麗出場。
官網(wǎng)上有他們的花名冊?
https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html
為了便于讓大家看懂毛雇,下面的介紹呢我改一下出場順序
1.By.id
一般情況下嫉称,Id都是唯一的,所以如果你在檢查元素的時候可以找到它的id值灵疮,那就甭猶豫了织阅,拿來用吧!怎么用呢震捣?沒圖你說個屁荔棉,嗯,舉個栗子:
我們先用一段程序在瀏覽器里面打開百度網(wǎng)址
框中有個顯眼的id="kw"是嗎润樱,嗯,要的就是kw羡棵,這就是我們要找的id屬性壹若,所以接下來這樣寫
id屬性了解了之后,name和className的道理是一樣的
還是剛才那段藍色的框里的內容秃流,注意到id后面的name和class了嗎赂蕴,這兩個就是name屬性和className屬性
所以同樣的功能用這兩個寫起來是下面這樣:
2.By.name
3.?By.className
這里大家注意:class屬性要保證值是唯一的,檢查是不是唯一的方法很簡單舶胀,把屬性值copy下來概说,檢查頁面ctrl+f,下面會出現(xiàn)一個搜索框峻贮,搜索框里把值貼進去
就算這里查到的個數(shù)不是唯一的也不用擔心席怪,因為有些值可能是在ccs或者javascript里面,我們只要關心body里的值是不是唯一就可以了纤控,比如我們剛剛這個挂捻,雖然總數(shù)不只一個,但是body里面是唯一的船万,所以放心的用就好了
4.?By.xpath
這一個在上節(jié)課介紹過的刻撒,準確率較高的一種定位方式骨田,用起來很簡單,復制粘貼走一波就可以了,細節(jié)不演示了声怔,大家自己動手态贤,豐衣足食吧
5.?By.css
By.css呢,跟xpath用法一樣醋火,都是可以直接復制粘貼的悠汽,還是剛那個路徑,只不過要復制的地方稍稍往上一點
但是呢芥驳,css肯定不光這一個復制粘貼的辦法柿冲,送你套秘籍,點這里http://www.w3school.com.cn/cssref/css_selectors.asp
這個選擇器什么意思呢兆旬,舉兩個例子啊假抄,上面知道了id屬性和class屬性了吧,我們用css定位的時候填寫class屬性丽猬,只需要在值的簽名加一個. ?同樣宿饱,如果你用id屬性,那么就在值的前面加#
比如說脚祟,我們剛剛搜索框的Id屬性值是kw,那么這樣寫
或者這樣
試一下結果谬以,效果是一樣的吧,驚不驚喜愚铡,意不意外蛉签,下面的那些大家以后的實踐當中可以挨個玩玩
6.?By.linkText
這個方法胡陪,主要用來點擊頁面上會跳轉的鏈接沥寥,還是看百度首頁
右上角這一排,點擊任一一個都會跳轉到一個新頁面的鏈接柠座,用By.linkText就準沒錯了邑雅,不用找屬性,直接輸入字段名稱就可以妈经,但是記得它是頁面唯一一的字段才可以淮野,如果這個字段在頁面出現(xiàn)兩個或以上,那乖乖的用別的方法去吹泡,沒商量
下面點個“新聞”鏈接看看
7. By.partialLinkText
這個用法跟上面的一樣骤星,定位頁面的鏈接,區(qū)別在于爆哑,它支持模糊查詢洞难,也就是說,輸入要點擊文字的一部分就可以了揭朝,我們要搜索“新聞”队贱,在這里了色冀,主要輸入“新”或者“聞”都可以
8.?By.tagName
我們可以看到官網(wǎng)上在這種方法前面標注了deprecated柱嫌,沒錯锋恬,它是一種被打入冷宮的方法,已經(jīng)被棄用了编丘,為什么這樣對它呢与学?
原因這種方法呢要根據(jù)元素前面的標簽來定位比如說div標簽,a標簽巴拉巴拉的一對標簽嘉抓,可是這樣的標簽有太多癣防,找起來相當麻煩,所以呢掌眠,大家只要對它有個大致了解就好蕾盯,實際運用中不用此方法定位元素
定位元素的幾種方法上面介紹完了,下面說一下動態(tài)生成的元素怎么定位
何為動態(tài)生成的元素蓝丙,比如這樣级遭,我們在輸入框里輸入123,這個時候下面會帶出來好幾個可能我們要找的選項
如果此時我們想要選擇第二條“12306鐵路客戶服務中心”渺尘,你會發(fā)現(xiàn)當點擊選擇器的時候鼠標失去焦點挫鸽,下面的信息就全都消失不見了,扎心了鸥跟,老鐵丢郊。。医咨。
沒關系枫匾,只要思想不滑坡,辦法總比困難多
然后在console界面下找到輸入框拟淮,在里面輸入搜索內容干茉,這時就會自動輸入搜索內容帶出下面的結果選項
再切換到Element目錄下,就可以定位到了
元素定位說到這里很泊,第四課的另外一個內容角虫,是如何截屏,老套路委造,還是先看官方文檔怎么說https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html#takeScreenshot
調用的方法是takeScreenshot戳鹅,我們代碼實現(xiàn)一下
怎么把這一堆天書存儲成可以看到的圖片呢昏兆,這里用這個方法fs ? ?https://nodejs.org/api/fs.html
然后把圖片的源碼轉換成圖片格式枫虏,參考這個文檔
https://stackoverflow.com/questions/3422262/take-a-screenshot-with-selenium-webdriver
照他說的,差不多就是這么寫了
行不行燃异,拉出來遛遛唄
打開看一下,就是我們要的截圖
今天的課堂筆記到這里結束回俐,更多精彩內容逛腿,歡迎關注騰訊課堂
https://ke.qq.com/course/281565#tuin=173f40be,周一至周五晚上8:00仅颇,不見不散
測試工具CukeTest下載地址http://www.cuketest.com/