前言:本章將詳細介紹元素定位的的8種方式和WebDriver常用方法(點擊和輸入、提交、獲取一些內容)的使用。
一、定位元素的8種方式
1、方法介紹
定位一個元素 | 定位多個元素 | 含義 |
---|---|---|
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表達式定位 |
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() |
通過標籤定位 |
find_element_by_class_name() |
find_elements_by_class_name() |
通過類名進行定位 |
find_elements_by_css_selector() |
find_elements_by_css_selector() |
通過css選擇器進行定位 |
2、實例演示
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')
#通過類名進行定位
driver.find_element_by_class_name('s_ipt')
#通過標籤定位
driver.find_element_by_tag_name('input')
#通過xpath表達式定位
driver.find_element_by_xpath('//*[@id="kw"]')
#通過css選擇器進行定位
driver.find_element_by_css_selector('#kw')
#通過完整超鏈接定位
driver.find_element_by_link_text('新聞')
#通過部分鏈接定位
driver.find_element_by_partial_link_text('hao')
driver.quit()#關閉所有標籤頁
關於xpaht和css的定位比較複雜,請參考:
- 此處定位可能無法直接查看效果(打印結果爲獲取的元素對象)
- 定位一般都配合一些常用方法使用
- 上述實例中都是單個元素定位,多個元素定位關鍵字請參考上邊的
方法介紹
二、WebDriver常用方法(配合定位方法使用)
1.點擊和輸入
- clear(): 清除文本,大多數用於輸入框
- send_keys (): 模擬按鍵輸入,大多數用於輸入框
- click(): 單擊元素,用處比較廣泛
更多鼠標鍵盤事件請參考:
Python爬蟲 - Selenium(5)鼠標事件
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() # 關閉所有標籤頁
3.提交
- submit():用於提交表單,相當於回車,應用範圍遠不及 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() # 關閉所有標籤頁
4.獲取一些內容
- title:獲得當前頁面的標題
- current_url:用戶獲得當前頁面的URL
- size: 獲取元素的尺寸
- text: 獲取元素的文本
- get_attribute(): 獲得屬性值
- is_displayed(): 該元素是否用戶可見
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 獲取當前頁面的title
title = driver.title
print(title)
#獲取當前頁的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)
# 返回元素的結果是否可見, 返回結果爲 True 或 False
result = driver.find_element_by_id("kw").is_displayed()
print(result)
driver.quit() # 關閉所有標籤頁
Selenium文集傳送門:
標題 | 簡介 |
---|---|
Python爬蟲 - Selenium(1)安裝和簡單使用 | 詳細介紹Selenium的依賴環境在Windows和Centos7上的安裝及簡單使用 |
Python爬蟲 - Selenium(2)元素定位和WebDriver常用方法 | 詳細介紹定位元素的8種方式並配合點擊和輸入、提交、獲取斷言信息等方法的使用 |
Python爬蟲 - Selenium(3)控制瀏覽器的常用方法 | 詳細介紹自定義瀏覽器窗口大小或全屏、控制瀏覽器後退、前進、刷新瀏覽器等方法的使用 |
Python爬蟲 - Selenium(4)配置啓動項參數 | 詳細介紹Selenium啓動項參數的配置,其中包括無界面模式、瀏覽器窗口大小設置、瀏覽器User-Agent (請求頭)等等 |
Python爬蟲 - Selenium(5)鼠標事件 | 詳細介紹鼠標右擊、雙擊、拖動、鼠標懸停等方法的使用 |
Python爬蟲 - Selenium(6)鍵盤事件 | 詳細介紹鍵盤的操作,幾乎包含所有常用按鍵以及組合鍵 |
Python爬蟲 - Selenium(7)多窗口切換 | 詳細介紹Selenium是如何實現在不同的窗口之間自由切換 |
Python爬蟲 - Selenium(8)frame/iframe表單嵌套頁面 | 詳細介紹如何從當前定位的主體切換爲frame/iframe表單的內嵌頁面中 |
Python爬蟲 - Selenium(9)警告框(彈窗)處理 | 詳細介紹如何定位並處理多類警告彈窗 |
Python爬蟲 - Selenium(10)下拉框處理 | 詳細介紹如何靈活的定位並處理下拉框 |
Python爬蟲 - Selenium(11)文件上傳 | 詳細介紹如何優雅的通過send_keys()指定文件進行上傳 |
Python爬蟲 - Selenium(12)獲取登錄Cookies,並添加Cookies自動登錄 | 詳細介紹如何獲取Cookies和使用Cookies進行自動登錄 |
Python爬蟲 - Selenium(13)設置元素等待 | 詳細介紹如何優雅的設置元素等待時間,防止程序運行過快而導致元素定位失敗 |
Python爬蟲 - Selenium(14)窗口截圖 | 詳細介紹如何使用窗口截圖 |
Python爬蟲 - Selenium(15)關閉瀏覽器 | 詳細介紹兩種關閉窗口的區別 |
歡迎留言吐槽