詳解Selenium 元素定位和WebDriver常用方法
一、定位元素的8種方式
1、方法介紹
定位一個(gè)元素 | 定位多個(gè)元素 | 含義 |
---|---|---|
find_element_by_id() | find_elements_by_id() | 通過元素id定位 |
find_element_by_name() | find_elements_by_name() | 通過元素name定位 |
find_element_by_xpath() | find_elements_by_xpath() | 通過xpath表達(dá)式定位 |
find_element_by_link_text() | find_elements_by_link_text() | 通過完整超鏈接定位 |
find_element_by_partial_link_text() | find_elements_by_partial_link_text() | 通過部分鏈接定位 |
find_element_by_tag_name() | find_elements_by_tag_name() | 通過標(biāo)簽定位 |
find_element_by_class_name() | find_elements_by_class_name() | 通過類名進(jìn)行定位 |
find_elements_by_css_selector() | find_elements_by_css_selector() |
2、實(shí)例演示
from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') #通過元素id定位() driver.find_element_by_id('kw') #通過元素name定位 driver.find_element_by_name('wd') #通過類名進(jìn)行定位 driver.find_element_by_class_name('s_ipt') #通過標(biāo)簽定位 driver.find_element_by_tag_name('input') #通過xpath表達(dá)式定位 driver.find_element_by_xpath('//*[@id="kw"]') #通過css選擇器進(jìn)行定位 driver.find_element_by_css_selector('#kw') #通過完整超鏈接定位 driver.find_element_by_link_text('新聞') #通過部分鏈接定位 driver.find_element_by_partial_link_text('hao') driver.quit()#關(guān)閉所有標(biāo)簽頁
關(guān)于xpaht和css的定位比較復(fù)雜,請(qǐng)參考:
- 此處定位可能無法直接查看效果(打印結(jié)果為獲取的元素對(duì)象)
- 定位一般都配合一些常用方法使用
- 上述實(shí)例中都是單個(gè)元素定位,多個(gè)元素定位關(guān)鍵字請(qǐng)參考上邊的方法介紹
二、WebDriver常用方法(配合定位方法使用)
1.點(diǎn)擊和輸入
- clear(): 清除文本,大多數(shù)用于輸入框
- send_keys (): 模擬按鍵輸入,大多數(shù)用于輸入框
- click(): 單擊元素,用處比較廣泛
更多鼠標(biāo)鍵盤事件請(qǐng)參考:
Python爬蟲 - Selenium(5)鼠標(biāo)事件
Python爬蟲 - Selenium(6)鍵盤事件
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com/') driver.find_element_by_id("kw").clear() driver.find_element_by_id("kw").send_keys("程序猿雜記") driver.find_element_by_id("su").click() time.sleep(5) driver.quit() # 關(guān)閉所有標(biāo)簽頁
3.提交
submit():用于提交表單,相當(dāng)于回車,應(yīng)用范圍遠(yuǎn)不及 click()廣泛
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com/') driver_id = driver.find_element_by_id("kw") driver_id.send_keys("程序猿雜記") driver_id.submit() time.sleep(5) driver.quit() # 關(guān)閉所有標(biāo)簽頁
4.獲取一些內(nèi)容
- title:獲得當(dāng)前頁面的標(biāo)題
- current_url:用戶獲得當(dāng)前頁面的URL
- size: 獲取元素的尺寸
- text: 獲取元素的文本
- get_attribute(): 獲得屬性值
- is_displayed(): 該元素是否用戶可見
from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 獲取當(dāng)前頁面的title title = driver.title print(title) #獲取當(dāng)前頁的url url = driver.current_url print(url) # 獲得輸入框的尺寸 input_size = driver.find_element_by_id('kw').size print(input_size) # 返回百度頁面底部備案信息 text = driver.find_element_by_id("cp").text print(text) # 返回元素的屬性值, 可以是 id、 name、 type 或其他任意屬性 attribute = driver.find_element_by_id("kw").get_attribute('type') print(attribute) # 返回元素的結(jié)果是否可見, 返回結(jié)果為 True 或 False result = driver.find_element_by_id("kw").is_displayed() print(result) driver.quit() # 關(guān)閉所有標(biāo)簽頁
Selenium文集傳送門:
標(biāo)題 | 簡(jiǎn)介 |
---|---|
Python爬蟲 - Selenium(1)安裝和簡(jiǎn)單使用 | 詳細(xì)介紹Selenium的依賴環(huán)境在Windows和Centos7上的安裝及簡(jiǎn)單使用 |
Python爬蟲 - Selenium(2)元素定位和WebDriver常用方法 | 詳細(xì)介紹定位元素的8種方式并配合點(diǎn)擊和輸入、提交、獲取斷言信息等方法的使用 |
Python爬蟲 - Selenium(3)控制瀏覽器的常用方法 | 詳細(xì)介紹自定義瀏覽器窗口大小或全屏、控制瀏覽器后退、前進(jìn)、刷新瀏覽器等方法的使用 |
Python爬蟲 - Selenium(4)配置啟動(dòng)項(xiàng)參數(shù) | 詳細(xì)介紹Selenium啟動(dòng)項(xiàng)參數(shù)的配置,其中包括無界面模式、瀏覽器窗口大小設(shè)置、瀏覽器User-Agent (請(qǐng)求頭)等等 |
Python爬蟲 - Selenium(5)鼠標(biāo)事件 | 詳細(xì)介紹鼠標(biāo)右擊、雙擊、拖動(dòng)、鼠標(biāo)懸停等方法的使用 |
Python爬蟲 - Selenium(6)鍵盤事件 | 詳細(xì)介紹鍵盤的操作,幾乎包含所有常用按鍵以及組合鍵 |
Python爬蟲 - Selenium(7)多窗口切換 | 詳細(xì)介紹Selenium是如何實(shí)現(xiàn)在不同的窗口之間自由切換 |
Python爬蟲 - Selenium(8)frame/iframe表單嵌套頁面 | 詳細(xì)介紹如何從當(dāng)前定位的主體切換為frame/iframe表單的內(nèi)嵌頁面中 |
Python爬蟲 - Selenium(9)警告框(彈窗)處理 | 詳細(xì)介紹如何定位并處理多類警告彈窗 |
Python爬蟲 - Selenium(10)下拉框處理 | 詳細(xì)介紹如何靈活的定位并處理下拉框 |
Python爬蟲 - Selenium(11)文件上傳 | 詳細(xì)介紹如何優(yōu)雅的通過send_keys()指定文件進(jìn)行上傳 |
Python爬蟲 - Selenium(12)獲取登錄Cookies,并添加Cookies自動(dòng)登錄 | 詳細(xì)介紹如何獲取Cookies和使用Cookies進(jìn)行自動(dòng)登錄 |
Python爬蟲 - Selenium(13)設(shè)置元素等待 | 詳細(xì)介紹如何優(yōu)雅的設(shè)置元素等待時(shí)間,防止程序運(yùn)行過快而導(dǎo)致元素定位失敗 |
Python爬蟲 - Selenium(14)窗口截圖 | 詳細(xì)介紹如何使用窗口截圖 |
Python爬蟲 - Selenium(15)關(guān)閉瀏覽器 | 詳細(xì)介紹兩種關(guān)閉窗口的區(qū)別 |
到此這篇關(guān)于詳解Selenium 元素定位和WebDriver常用方法的文章就介紹到這了,更多相關(guān)Selenium 元素定位內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用實(shí)例分析Python中method的參數(shù)傳遞過程
這篇文章主要介紹了用實(shí)例分析Python中method的參數(shù)傳遞過程,包括instancemethod和staticmethod等實(shí)例,需要的朋友可以參考下2015-04-04Python3從零開始搭建一個(gè)語音對(duì)話機(jī)器人的實(shí)現(xiàn)
這篇文章主要介紹了Python3從零開始搭建一個(gè)語音對(duì)話機(jī)器人的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08wxpython實(shí)現(xiàn)按鈕切換界面的方法
這篇文章主要為大家詳細(xì)介紹了wxpython實(shí)現(xiàn)按鈕切換界面的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Python實(shí)現(xiàn)PPT/PPTX批量轉(zhuǎn)換成PDF
這篇文章主要為大家詳細(xì)介紹了如何使用Python將PowerPoint演示文稿(PPT、PPTX等)轉(zhuǎn)換為PDF文件,使演示內(nèi)容能夠在更多的設(shè)備上展示,感興趣的小伙伴可以了解下2024-01-01Django Admin 實(shí)現(xiàn)外鍵過濾的方法
下面小編就為大家?guī)硪黄狣jango Admin 實(shí)現(xiàn)外鍵過濾的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用
本文探索Python內(nèi)置數(shù)據(jù)類型的精髓與應(yīng)用,包括字符串、列表、元組、字典和集合。通過深入了解它們的特性、操作和常見用法,讀者將能夠更好地利用這些數(shù)據(jù)類型解決實(shí)際問題。2023-09-09python程序運(yùn)行進(jìn)程、使用時(shí)間、剩余時(shí)間顯示功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了python程序運(yùn)行進(jìn)程、使用時(shí)間、剩余時(shí)間顯示功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-07-07Pandas實(shí)現(xiàn)DataFrame的簡(jiǎn)單運(yùn)算、統(tǒng)計(jì)與排序
本文主要介紹了Pandas實(shí)現(xiàn)DataFrame的簡(jiǎn)單運(yùn)算、統(tǒng)計(jì)與排序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03