python中通過(guò)selenium簡(jiǎn)單操作及元素定位知識(shí)點(diǎn)總結(jié)
瀏覽器的簡(jiǎn)單操作
# 導(dǎo)入webdriver模塊
# 創(chuàng)建driver對(duì)象,指定Chrome瀏覽器
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 訪問(wèn)百度
driver.get("http://baidu.com")
driver.get("http://sina.com")
# 后退
driver.back()
# 前進(jìn)
driver.forward()
# 刷新
driver.refresh()
# 關(guān)閉窗口
driver.close()
# 關(guān)閉會(huì)話,關(guān)閉瀏覽器,關(guān)閉chromedriver
driver.quit()
selenium的8種定位方式
6種靠單一的特征來(lái)找元素(id, calss_name, tag_name, name, link_text(2))
組合各種特征和關(guān)系來(lái)找元素(xpath, css)
1.id定位:唯一
find_element_by_id()
2.name定位:不唯一
find_element_by_name()
find_elements_by_name()
3.class定位:不唯一
find_element_by_class()
4.tag_name定位:不唯一
find_element_by_tag_name() # 單數(shù),在DOM頁(yè)面中,匹配到的第一個(gè)元素
find_elements_by_tag_name() # 復(fù)數(shù),返回的是一個(gè)列表,元素為webElement對(duì)象,全部匹配的元素
5.文本匹配:/完全匹配/部分匹配
find_element_by_link_text()
find_element_by_partial_link_text()
Xpath定位:
1.通過(guò)自己來(lái)定位:
語(yǔ)法://標(biāo)簽名[@屬性名=值]
例如:
//*[@id="mCon"]/span # *匹配所有元素
//*[@id="kw"]
2.通過(guò)文本來(lái)定位:
語(yǔ)法://標(biāo)簽名[text()="值"]
例如:
//h1[(text()= "第20期")] # 完全匹配
//h1[contains(text(), "第20期")] # 部分匹配,包含
3.層級(jí)定位:
如果找到的元素有兩個(gè)或多個(gè)完全一樣的元素,那么就通過(guò)他們不同的父級(jí)或父級(jí)的父級(jí)來(lái)定位
/ 絕對(duì)定位,單斜杠只能寫(xiě)子級(jí),不能跳級(jí)寫(xiě)
// 相對(duì)定位,雙斜杠可以寫(xiě)子級(jí),子級(jí)的子級(jí)等等(推薦使用)
舉例說(shuō)明:

l 輸入賬號(hào) //div//input[@name="account"] //div[@class="padding-cont pt-login"]//input[@placeholder="郵箱/賬號(hào)/手機(jī)號(hào)"] l 輸入密碼 //div[@class="padding-cont pt-login"]//input[@name="pass"] //div[@class="padding-cont pt-login"]//input[@type="password"] l 下次自動(dòng)登錄 //div[@class="padding-cont pt-login"]//a[text()="下次自動(dòng)登錄"] //div[@class="padding-cont pt-login"]//a[@class="auto-login fl"] l 忘記密碼 //div[@class="padding-cont pt-login"]//a[@class="forget fr"] //div[@class="padding-cont pt-login"]//a[text()="忘記密碼?"] l 登錄按鈕 //div[@class="padding-cont pt-login"]//a[@class="btn-btn"] //div[@class="padding-cont pt-login"]//a[text()="登錄"]
Xpath軸定位:
含義:通過(guò)同級(jí)目錄來(lái)定位元素,叫做軸定位
軸運(yùn)算:
ancestor:祖先節(jié)點(diǎn),包括父節(jié)點(diǎn)
parent:父節(jié)點(diǎn)
preceding-sibling:當(dāng)前元素節(jié)點(diǎn)標(biāo)簽之前的所有兄弟節(jié)點(diǎn)
following-sibling:當(dāng)前元素節(jié)點(diǎn)標(biāo)簽之后的所有兄弟節(jié)點(diǎn)
preceding:當(dāng)前元素節(jié)點(diǎn)標(biāo)簽之前的所有節(jié)點(diǎn)(HTML頁(yè)面先后順序)
following:當(dāng)前元素節(jié)點(diǎn)標(biāo)簽之后所有的節(jié)點(diǎn)(HTML頁(yè)面先后順序)
軸定位語(yǔ)法:
/軸名稱(chēng)::標(biāo)簽名稱(chēng)[@屬性名=值]
示例:例://div//table//td//preceding::td
應(yīng)用場(chǎng)景:
頁(yè)面顯示為一個(gè)表格樣式的數(shù)據(jù)列,需要通過(guò)組合來(lái)定位元素
以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家對(duì)腳本之家的支持。
- Python腳本Selenium及頁(yè)面Web元素定位詳解
- Python+Selenium定位不到元素常見(jiàn)原因及解決辦法(報(bào):NoSuchElementException)
- 處理Selenium3+python3定位鼠標(biāo)懸停才顯示的元素
- Python selenium根據(jù)class定位頁(yè)面元素的方法
- Python2 Selenium元素定位的實(shí)現(xiàn)(8種)
- python+selenium 定位到元素,無(wú)法點(diǎn)擊的解決方法
- selenium+python自動(dòng)化測(cè)試之頁(yè)面元素定位
- Python?selenium?八種定位元素的方式
相關(guān)文章
Python3.6 Schedule模塊定時(shí)任務(wù)(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇Python3.6 Schedule模塊定時(shí)任務(wù)(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Pytorch 如何訓(xùn)練網(wǎng)絡(luò)時(shí)調(diào)整學(xué)習(xí)率
這篇文章主要介紹了Pytorch 如何訓(xùn)練網(wǎng)絡(luò)時(shí)調(diào)整學(xué)習(xí)率的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
基于python的前后端分離的模擬實(shí)現(xiàn)
前后端分離核心是UI界面展示層(View)和數(shù)據(jù)處理層(Model)通過(guò)控制層(Controller)進(jìn)行解耦合,在MVC設(shè)計(jì)模式中,前端主要負(fù)責(zé)數(shù)據(jù)展示和用戶(hù)交互(View),后端處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)(Model),通過(guò)API接口進(jìn)行通信,提高了開(kāi)發(fā)效率,便于前后端分工合作,有利于代碼的維護(hù)和迭代2024-10-10
Python如何基于rsa模塊實(shí)現(xiàn)非對(duì)稱(chēng)加密與解密
這篇文章主要介紹了Python如何基于rsa模塊實(shí)現(xiàn)非對(duì)稱(chēng)加密與解密,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
詳解PyQt5 GUI 接收UDP數(shù)據(jù)并動(dòng)態(tài)繪圖的過(guò)程(多線程間信號(hào)傳遞)
這篇文章主要介紹了PyQt5 GUI 接收UDP數(shù)據(jù)并動(dòng)態(tài)繪圖(多線程間信號(hào)傳遞),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09

