【python&爬蟲】快速入門Web自動化測試工具selenium

一.selenium基本介紹

1.selenium是一個web的自動化測試工具,最初是爲網站自動化測試而開發的,它可以按指定的命令自動操作。selenium可以直接運行在瀏覽器上,它支持所有主流的瀏覽器。
2.selenium可以根據用戶指令,讓瀏覽器自動加載頁面,獲取需要的數據,甚至頁面截屏,或者判斷網站上某些動作的發生。

二.selenium原理圖及解析

說明:
1.自動化程序調用Selenium 客戶端庫函數(比如點擊按鈕元素)
2.客戶端庫會發送Selenium 命令 給瀏覽器的驅動程序
3.瀏覽器驅動程序接收到命令後 ,將命令轉發給瀏覽器
4.瀏覽器執行命令
5.瀏覽器驅動程序獲取命令執行的結果,返回給我們自動化程序
6.自動化程序對返回結果進行處理
在這裏插入圖片描述

三.安裝selenium環境

安裝selenium環境最重要的是安裝客戶端庫瀏覽器驅動
1.安裝selenium客戶端庫,cmd執行

pip install selenium

2.安裝瀏覽器驅動,以chrome瀏覽器爲例
瀏覽器驅動下載連接
需要對應自己瀏覽器的版本,幫助 --> 關於即可查看
查看瀏覽器版本
爲避免瀏覽器自動更新造成版本不一致情況,可以提前關閉瀏覽器自動更新
在這裏插入圖片描述
解壓,瀏覽器驅動可放在任意文件夾,程序中再指定路徑
在這裏插入圖片描述

四.selenium常用操作

1.元素定位方法
說明:這些方法都有複數形式,比如按id查找元素,就有 find_elements_by_id(),仔細看elements加了 s ,即查看所有滿足條件的元素,並返回一個列表。

方法名 說明
find_element_by_id 按id查找元素
find_element_by_xpath Finds 按xpath列出的多個元素
find_element_by_link_text 按鏈接文本查找元素
find_element_by_partial_link_text 通過元素鏈接文本的部分匹配來查找元素
find_element_by_name 按名稱查找元素
find_element_by_tag_name 按標籤名查找元素
find_element_by_class_name 通過class屬性查找
find_element_by_css_selector 通過css選擇器查找元素
注意: 如果這些方法沒有查找到則會拋出NoSuchElementException異常

2.其他常用操作

方法名 說明
element.click() 鼠標點擊操作
element.send_keys(data) 向搜索框中輸入內容
element.text 獲取標籤中文本內容
webdriver.get(url) 請求url操作
element.get_attribute(value) 獲取標籤中value屬性值

方法常用方法總結

五.selenium入門案例

1.獲取頁面內容

# 導包
from selenium import webdriver
# 創建WebDriver對象,指定瀏覽器驅動絕對路徑
wd = webdriver.Chrome(r'D:\ChromeCoreDownloads\chromedriver.exe')
# 使用web驅動類打開網址
wd.get("https://www.baidu.com/")

運行結果後,程序會自動打開chrome瀏覽器,並獲取網址的頁面內容
在這裏插入圖片描述

2.在百度搜索欄中輸入內容,並查找

2.1.先要找到搜索欄元素
在這裏插入圖片描述

# 使用web驅動類選擇id元素 kw是對應id的屬性值
# 返回一個WebElement對象
element = wd.find_element_by_id("kw")

# 通過WebElement對象,對頁面進行操作
# 比如輸入字符串
element.send_keys("周杰倫\n") # \n 代表回車搜索

# 也可以不用 \n 代替回車
element.send_keys("周杰倫")    # 相當於在搜索框輸入周杰倫 但是沒有點擊百度一下搜索
# 找到百度一下按鈕 也是通過id號尋找
# 注意:使用find_等查找操作,需要使用WebDriver或者WebElement對象
'''
WebDriver對象代整個網頁
WebElement對象代表通過WebDriver選擇後的部分網頁
'''
element1 = wd.find_element_by_id("su")
# 找到之後進行鼠標點擊操作
element1.click()

運行結果
在這裏插入圖片描述

3.通過id屬性查找標籤,並獲取其中文本內容

在這裏插入圖片描述

代碼解析

# 導包
from selenium import webdriver
# 創建WebDriver對象,指定瀏覽器驅動絕對路徑
wd = webdriver.Chrome(r'D:\ChromeCoreDownloads\chromedriver.exe')
# 使用web驅動類打開網址
wd.get("https://www.baidu.com/")

# 使用web驅動類選擇id元素 kw是對應id的屬性值
# 返回一個WebElement對象
element = wd.find_element_by_id("kw")
element.send_keys("周杰倫")    # 相當於在搜索框輸入周杰倫 但是沒有點擊百度一下搜索
# 找到百度一下按鈕 也是通過id號尋找
# 注意:使用find_等查找操作,需要使用WebDriver對象
element1 = wd.find_element_by_id("su")
# 找到之後進行鼠標點擊操作
element1.click()

# 由於程序執行速度要比瀏覽器響應時間快,以至於獲取不到內容
# 所有這裏程序要等待 1 秒
import time
time.sleep(1)
res = wd.find_element_by_id("1")
# text方法代表獲取標籤中的文本內容
print(res.text)

運行結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章