一.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)
運行結果