1. 概述
Selenium 是一個用于自動化 web 瀏覽器的工具,它提供了一套用于測試 web 應(yīng)用程序的工具和庫。Selenium 最初是用于測試 web 應(yīng)用程序的,但它也被廣泛用于進行網(wǎng)絡(luò)數(shù)據(jù)采集、自動化任務(wù)和網(wǎng)頁操作等。
Selenium 支持多種編程語言,包括 Python、Java、JavaScript、C# 等,但最為常用的是使用 Python 進行 Selenium 測試和自動化。使用 Selenium,您可以編寫代碼來模擬用戶在 web 瀏覽器中的操作,例如打開網(wǎng)頁、填寫表單、點擊按鈕、提取網(wǎng)頁內(nèi)容等。
Selenium 提供了多個工具和庫,其中最常用的是 Selenium WebDriver,它允許您控制各種不同的 web 瀏覽器,如 Chrome、Firefox、Edge 等。通過 Selenium WebDriver,您可以編寫代碼來與瀏覽器進行交互,模擬用戶在瀏覽器中的行為,并對 web 應(yīng)用程序進行測試、數(shù)據(jù)采集和自動化任務(wù)。
2. 安裝Chrome及ChromeDriver
2.1 安裝Chrome
(1)linux 安裝 Chrome 方法:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# 如果這一步報錯,直接執(zhí)行下一步
sudo dpkg -i ./google-chrome*.deb
sudo apt-get install -f
判斷是否安裝成功
google-chrome --version
(2)Windows 和 Mac,安裝Chrome 瀏覽器即可
2.2 安裝ChromeDriver
ChromeDriver 的下載方式參考這里,注意 ChromeDriver 和 Chrome 內(nèi)核的版本匹配即可。
3. 安裝Selenium
pip install selenium
4. 常見用法
4.1 啟動
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
WEB_DRIVER_PATH = "/xxx/xx/chromedriver"
chrome_options = Options()
driver = webdriver.Chrome(service=Service(WEB_DRIVER_PATH), options=chrome_options)
以下是啟動一些常見應(yīng)用場景的 ChromeOptions 配置示例:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 創(chuàng)建ChromeOptions實例
chrome_options = Options()
# 1. 隱身模式啟動
chrome_options.add_argument("--incognito")
# 2. 大窗口啟動
chrome_options.add_argument("--start-maximized")
# 3. 禁用GPU渲染
chrome_options.add_argument('--disable-gpu')
# 4. 添加瀏覽器啟動參數(shù),例如禁用安全警告
chrome_options.add_argument('--unsafely-treat-insecure-origin-as-secure="http://example.com"')
chrome_options.add_argument('--ignore-certificate-errors')
# 5. 添加擴展程序
# 注意:extension_path應(yīng)指向本地的.crx擴展程序文件
extension_path = '/path/to/your/extension.crx'
chrome_options.add_extension(extension_path)
# 6. 更改下載目錄
prefs = {
"download.default_directory": "/path/to/download/folder",
"download.prompt_for_download": False,
"plugins.always_open_pdf_externally": True # 例如,總是外部打開PDF文件
}
chrome_options.add_experimental_option("prefs", prefs)
# 7. 啟動無頭模式(無界面運行)
chrome_options.add_argument('--headless')
# 創(chuàng)建Chrome瀏覽器實例,使用上述配置
driver = webdriver.Chrome(options=chrome_options)
# 執(zhí)行網(wǎng)頁導(dǎo)航或者其他操作...
driver.get('http://example.com')
# 使用完畢后關(guān)閉瀏覽器
driver.quit()
4.2 查找元素
(1)用 id 查找
from selenium.webdriver.common.by import By
try:
ele = driver.find_element(By.ID, "id name")
except Exception as e:
pass
(2)用 class 查找
from selenium.webdriver.common.by import By
try:
# 查找第一個class名字匹配的元素
ele = driver.find_element(By.CLASS_NAME, "class name") # 替換 "class_name" 為實際Class名
# 查找所有class名字匹配的元素
eles = driver.find_elements(By.CLASS_NAME, "class name")
except Exception as e:
pass
(3)用 css 查找
from selenium.webdriver.common.by import By
try:
# 通過CSS選擇器定位單個元素
element = driver.find_element(By.CSS_SELECTOR, "#element_id" or ".class_name" or "tag_name[attr=value]"...) # 使用實際的CSS選擇器
# 通過CSS選擇器定位一組元素
elements = driver.find_elements(By.CSS_SELECTOR, "your_css_selector")
except Exception as e:
pass
(4)查找其他元素
from selenium.webdriver.common.by import By
try:
# 查找所有div標簽
ele = driver.find_elements(By.TAG_NAME, "div")
# 查找第一個a標簽
ele = driver.find_element(By.TAG_NAME, "a")
# 查找第一個span標簽
ele = driver.find_element(By.TAG_NAME, "span")
except Exception as e:
pass
4.3 等待頁面加載元素
有時頁面加載需要等待一定時間,如果顯式的 sleep,不夠靈活,可以借助selenium 的 WebDriverWait。
WebDriverWait 是 Selenium WebDriver 中用于實現(xiàn)隱式等待和顯式等待的一種機制,它能夠根據(jù)提供的條件等待元素變?yōu)榭捎没驖M足特定條件。顯式等待允許你在執(zhí)行下一步操作之前強制等待某個條件成立,這樣可以避免因為頁面元素加載不完全而導(dǎo)致的找不到元素或操作元素失敗的問題。
使用 WebDriverWait 的基本步驟如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化WebDriver對象,這里以Chrome為例
driver = webdriver.Chrome()
# 訪問某個URL
driver.get("http://www.example.com")
# 創(chuàng)建WebDriverWait對象,通常需要傳入WebDriver實例和超時時長
wait = WebDriverWait(driver, 10) # 這里的10表示最長等待10秒
# 使用WebDriverWait等待某個條件滿足
# 例如,等待頁面上某個id為'element_id'的元素可見
element = wait.until(EC.presence_of_element_located((By.ID, 'element_id')))
# 此時,element變量已經(jīng)被賦值為找到的元素,可以對其進行后續(xù)操作
element.click()
# 或者等待頁面標題包含特定文字
wait.until(EC.title_contains("Example"))
# 最后,關(guān)閉瀏覽器
driver.quit()
expected_conditions
模塊提供了多種內(nèi)置條件:文章來源:http://www.zghlxwxcb.cn/news/detail-860741.html
-
presence_of_element_located((By.ID, 'element_id'))
:等待元素存在 -
visibility_of_element_located((By.ID, 'element_id'))
:等待元素可見 -
element_to_be_clickable((By.ID, 'element_id'))
:等待元素可見且可點擊 -
title_is("Page Title")
:等待頁面標題為特定值 -
title_contains("Partial Title")
:等待頁面標題包含特定部分 - …
通過這種方式,WebDriverWait 可以幫助我們在執(zhí)行自動化腳本時更加穩(wěn)定可靠,確保在進行操作之前目標元素已經(jīng)準備好。文章來源地址http://www.zghlxwxcb.cn/news/detail-860741.html
到了這里,關(guān)于Python Selenium 的基本使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!