Python中Selenium的基本使用步驟
一、Selenium是什么?
Selenium是一個(gè)用于自動(dòng)化瀏覽器操作的Python庫(kù),常用于Web應(yīng)用的測(cè)試和爬蟲(chóng)等場(chǎng)景。
二、使用步驟
1.引入庫(kù)
安裝Selenium庫(kù):使用pip命令安裝Selenium庫(kù)??梢赃\(yùn)行以下命令進(jìn)行安裝:
pip install selenium==4.5
目前有更高版本4.10,但是高版本有些參數(shù)被改了或舍棄了,使用起來(lái)要自己去找官方文檔,不方便。而且過(guò)高的Selenium版本和Chrome瀏覽器版本不兼容,之前用的selenium4.10打開(kāi)chrome瀏覽器會(huì)秒退,后來(lái)將版本換為4.5就解決了 。
2.下載瀏覽器驅(qū)動(dòng)
Selenium需要使用瀏覽器驅(qū)動(dòng)來(lái)控制瀏覽器。這里以ChromeDriver為例,下載地址為:https://chromedriver.storage.googleapis.com/index.html
根據(jù)自己的Chrome版本進(jìn)行下載
我的是版本到了115,但是ChromeDriver目前只有114的,選最新的版本,目前沒(méi)遇見(jiàn)問(wèn)題。
3.配置瀏覽器驅(qū)動(dòng)
將下載的chromedriver.exe
文件放置在與你的Python腳本相同的目錄下
并將瀏覽器驅(qū)動(dòng)添加到系統(tǒng)的環(huán)境變量中,或?qū)⑵渎窂脚渲脼镾elenium的WebDriver對(duì)象的參 數(shù),在計(jì)算機(jī)上搜索高級(jí)系統(tǒng)設(shè)置->環(huán)境變量->path->新建->復(fù)制路徑->確定。
4.創(chuàng)建WebDriver對(duì)象
使用Selenium的WebDriver對(duì)象來(lái)控制瀏覽器。根據(jù)使用的瀏覽器類型和驅(qū)動(dòng)的配置,創(chuàng)建對(duì)應(yīng) 的WebDriver對(duì)象。
from selenium import webdriver # 創(chuàng)建Chrome瀏覽器的WebDriver對(duì)象 driver = webdriver.Chrome()
webdriver.Chrome
的常用參數(shù)
4.1.options
一個(gè)Options
對(duì)象,用于配置Chrome瀏覽器的選項(xiàng)。你可以使用該對(duì)象來(lái)設(shè)置瀏覽器窗口大小、啟用/禁用瀏覽器的擴(kuò)展程序、設(shè)置用戶代理等等。
from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--start-maximized') # 最大化窗口 options.add_argument('--disable-extensions') # 禁用擴(kuò)展程序 driver = webdriver.Chrome(options=options)
4.2.service
一個(gè)Service
對(duì)象,用于配置和啟動(dòng)ChromeDriver服務(wù)。如果沒(méi)有顯式指定,它將搜索系統(tǒng)的PATH
環(huán)境變量來(lái)找到ChromeDriver服務(wù)。
from selenium.webdriver.chrome.service import Service service = Service('chromedriver.exe') driver = webdriver.Chrome(service=service)
4.3.desired_capabilities
一個(gè)字典,用于設(shè)置WebDriver的所需能力。你可以使用該字典來(lái)設(shè)置瀏覽器的版本、操作系統(tǒng)、瀏覽器名稱等等。
caps = {'browserName': 'chrome', 'version': '', 'platform': 'ANY'} driver = webdriver.Chrome(desired_capabilities=caps)
4.4.executable_path
指定Chrome驅(qū)動(dòng)的路徑。如果沒(méi)有顯式指定,它將搜索系統(tǒng)的PATH
環(huán)境變量來(lái)找到Chrome驅(qū)動(dòng)程序。貌似被棄用了,我使用的時(shí)候報(bào)出警告了,用第二個(gè)service替換就行了。
5.WebDriver的屬性
# 打開(kāi)指定的網(wǎng)頁(yè) driver.get("https://www.baidu.com") #獲取當(dāng)前頁(yè)面的URL current_url = driver.current_url #獲取當(dāng)前頁(yè)面的標(biāo)題 title = driver.title #獲取當(dāng)前頁(yè)面的源代碼 page_source = driver.page_source #獲取當(dāng)前打開(kāi)的所有窗口的句柄 window_handles = driver.window_handles #獲取當(dāng)前窗口的句柄 current_window_handle = driver.current_window_handle #獲取當(dāng)前WebDriver的所需能力 desired_capabilities = driver.desired_capabilities #獲取當(dāng)前WebDriver的能力 capabilities = driver.capabilities
6.元素定位
Selenium提供了多種元素定位的方法,可以根據(jù)元素的屬性、文本、位置等進(jìn)行定位。以下是一些常用的元素定位方法:
舊版的selenium使用方法:
#通過(guò)id定位元素 element = driver.find_element_by_id("element-id") #通過(guò)class name定位元素 element = driver.find_element_by_class_name("element-class") #通過(guò)name屬性定位元素 element = driver.find_element_by_name("element-name") #通過(guò)tag name定位元素 element = driver.find_element_by_tag_name("element-tag") #通過(guò)鏈接文本定位元素 element = driver.find_element_by_link_text("link-text") #通過(guò)部分鏈接文本定位元素 element = driver.find_element_by_partial_link_text("partial-link-text") #通過(guò)CSS選擇器定位元素 element = driver.find_element_by_css_selector("css-selector") #通過(guò)XPath表達(dá)式定位元素 element = driver.find_element_by_xpath("xpath-expression")
新版的selenium有兩種定位方式,element = driver.find_element("id", "element-id")和element = driver.find_element(By.ID,"su") 這兩種方式本質(zhì)上是等效的,都是通過(guò)元素的id屬性進(jìn)行定位。第一種方式中,使用了字符串來(lái)表示定位策略,而第二種方式中,使用了By類來(lái)表示定位策略。By
類是Selenium提供的一組常用的定位策略,用于更清晰地表示定位方式。通過(guò)使用By
類,可以讓代碼更易讀且具備更好的可維護(hù)性。
from selenium.webdriver.common.by import By # 第一種方式:使用定位策略和定位值定位元素 element1 = driver.find_element("id", "element-id") element1 = driver.find_element("name", "element-name") # 第二種方式:使用By類結(jié)合定位策略定位元素 element2 = driver.find_element(By.ID, "element-id") element2 = driver.find_element(By.NAME, "element-name")
其余舊版的定位方法都可用轉(zhuǎn)換成這兩種方式
三.打開(kāi)百度網(wǎng)頁(yè)的簡(jiǎn)單示例
該示例演示了如何獲取百度頁(yè)面的源碼,如何在百度搜索框里輸入信息并點(diǎn)擊查找 。
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By import time #chromedriver.exe要與該python文件放在同一個(gè)目錄下 service = Service("chromedriver.exe") options = Options() #初始窗口最大化 options.add_argument('--start-maximized') driver = webdriver.Chrome(service=service, options=options) url = "https://www.baidu.com" driver.get(url) #獲取網(wǎng)頁(yè)的源碼 content = driver.page_source print(content) #根據(jù)id定位到百度搜索的輸入框 input = driver.find_element(By.ID,"kw") #在輸入框中輸入Python input.send_keys('Python') time.sleep(2) #根據(jù)id定位到百度一下的按鈕 button = driver.find_element(By.ID,"su") #按鈕點(diǎn)擊一下 button.click() time.sleep(2) #執(zhí)行JavaScript腳本,該腳本表示鼠標(biāo)滾輪滑動(dòng)到距離頂部100000,即滑動(dòng)到底部 js_button = 'document.documentElement.scrollTop=100000' driver.execute_script(js_button) time.sleep(2) #根據(jù)Xpath表達(dá)式定位下一頁(yè)的按鈕,并點(diǎn)擊一下 next_page = driver.find_element(By.XPATH,"http://a[@class='n']") next_page.click() time.sleep(2.1) #網(wǎng)頁(yè)后退 driver.back() time.sleep(1.5) #網(wǎng)頁(yè)前進(jìn) driver.forward() time.sleep(1.8) #網(wǎng)頁(yè)關(guān)閉 driver.quit()
總結(jié)
到此這篇關(guān)于Python中Selenium的基本使用的文章就介紹到這了,更多相關(guān)Python Selenium使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器
這篇文章主要介紹了用Python實(shí)現(xiàn)定時(shí)備份Mongodb數(shù)據(jù)并上傳到FTP服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例
這篇文章主要為大家介紹了使用Python進(jìn)行SSH和文件傳輸實(shí)現(xiàn)方法實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12詳解Python如何使用Netmiko進(jìn)行文件傳輸
Netmiko是一個(gè)用于連接和管理各種網(wǎng)絡(luò)設(shè)備的Python庫(kù),它是Paramiko的一個(gè)擴(kuò)展。本文就來(lái)講講如何利用Netmiko實(shí)現(xiàn)文件傳輸功能吧2023-05-05基于Python實(shí)現(xiàn)2種反轉(zhuǎn)鏈表方法代碼實(shí)例
這篇文章主要介紹了基于Python實(shí)現(xiàn)2種反轉(zhuǎn)鏈表方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07關(guān)于python寫入文件自動(dòng)換行的問(wèn)題
今天小編就為大家分享一篇關(guān)于python寫入文件自動(dòng)換行的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06安裝pycurl報(bào)錯(cuò)Could not run curl-config: &ap
這篇文章主要為大家介紹了安裝pycurl報(bào)錯(cuò)Could not run curl-config: 'curl-config'解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12