Selenium手動和自動兩種方式啟動Chrome驅動

1. 自動啟動chrome驅動(已經安裝了Selenium庫和Chrome驅動)

要使用Selenium自動跟隨自帶的Chrome驅動,你需要首先確保你已經安裝了Selenium庫和Chrome驅動。然后,你可以按照以下步驟進行操作:

  1. 導入必要的庫:
from selenium import webdriver
  1. 創建一個Chrome WebDriver實例:
driver = webdriver.Chrome()

這將自動根據系統中安裝的Chrome瀏覽器版本使用正確的驅動程序。

  1. 使用WebDriver執行自動化操作,例如訪問網頁、點擊元素等:
driver.get("https://www.example.com")  # 訪問一個網頁示例# 執行其他自動化操作...

通過調用get()方法,你可以讓WebDriver打開指定的URL,并加載對應的頁面。

  1. 最后,關閉WebDriver:
driver.quit()

這將關閉瀏覽器并結束WebDriver的進程。

下面是一個完整示例代碼:

from selenium import webdriver# 創建Chrome WebDriver實例
driver = webdriver.Chrome()# 訪問一個網頁示例
driver.get("https://www.example.com")# 執行其他自動化操作...# 關閉WebDriver
driver.quit()

你可以根據自己的需求,在執行自動化操作之前和之后,添加相應的代碼來修改或擴展操作。

請注意,為了正常運行,你需要安裝Selenium庫和與你的Chrome瀏覽器版本匹配的Chrome驅動程序。確保將Chrome驅動程序所在的目錄添加到系統的環境變量中,或者在代碼中指定驅動程序的路徑。

2. 手動啟動chrome驅動

如果你想手動指定使用瀏覽器的驅動程序,可以按照以下步驟操作:

  1. 首先,下載適用于你的Chrome瀏覽器版本的Chrome驅動程序。你可以從以下鏈接下載對應的驅動程序:https://sites.google.com/a/chromium.org/chromedriver/downloads

  2. 本地鏡像下載驅動地址:https://registry.npmmirror.com/binary.html?path=chromedriver/

  3. 將下載的驅動程序解壓縮到一個你希望存放驅動程序的目錄中。

  4. 在代碼中指定使用特定的驅動程序路徑,例如:

from selenium import webdriver# 指定Chrome驅動程序的路徑
driver_path = "path/to/chromedriver"# 創建Chrome WebDriver實例,并指定驅動程序路徑
driver = webdriver.Chrome(executable_path=driver_path)# 執行自動化操作...

path/to/chromedriver 替換為你實際的驅動程序路徑。

  1. 執行其他自動化操作,如訪問網頁、點擊元素等:
driver.get("https://www.example.com")  # 訪問一個網頁示例# 執行其他自動化操作...
  1. 最后,關閉WebDriver:
driver.quit()

這樣,你就可以手動指定使用瀏覽器的驅動程序來進行自動化操作了。

請確保下載的驅動程序與你的Chrome瀏覽器版本匹配,以確保正常運行。

3. 實例

“”"
下載qq到放到指定文件夾
“”"
一、前提

注意:selenium的使用方式和版本有很大的關系,例如selenium版本為3.141.0,會有
find_element_by_id()/ find_element_by_name()/find_element_by_class__name()等八大元素定位的方法
本次演示的selenium版本為4.8.3,故沒有上述八大元素的寫法,通用寫法為:
先導包 from selenium.webdriver.common.by import By
再定位  browser.find_element(By.ID,'kw')/browser.find_element(By.NAME,'wd') 這樣的寫法

二、操作步驟
1.裝包
需要用到的第三方包urllib3、selenium,安裝方式例如:pip install selenium
如果需要特定版本,可以鏡像安裝:

pip install selenium  -i https://pypi.tuna.tsinghua.edu.cn/simple

3.1驅動安裝

3.1.1自動安裝(使用用外網可以訪問的場景)

import time
from selenium import  webdriver
# 需要用到第三方庫webdriver_manager
from webdriver_manager.chrome import ChromeDriverManagerbrowser = webdriver.Chrome(ChromeDriverManager().install())
# 打開網址
browser.get('https://cn.bing.com')
time.sleep(3)

3.1.2 手動安裝(適用于無法連接公網時)

import timefrom selenium import webdriver
# 定位元素用
from selenium.webdriver.common.by import By
# 模擬回車用
from selenium.webdriver.common.keys import Keys
# 驅動的下載位置:https://registry.npmmirror.com/binary.html?path=chromedriver/
# 下載什么版本的驅動呢?首先查到你瀏覽器的版本,下載的驅動應為跟你瀏覽器版本一致或者最接近的版本,在上面鏈接中通常選擇32位的,例如"chromedriver_win32.zip"
# 驅動位置的寫法,也和selenium的版本有很大關系
browser = webdriver.Chrome(executable_path=r"D:chromedriver.exe")
# 定義下載的位置
#設置1
options = webdriver.ChromeOptions()
# 更改下載路徑
# 如果該路徑不存在會自動創建
prefs = {"download.default_directory":'C:\Download_test','download.prompt_for_download':False}新加一條,不加載圖片prefs = {"download.default_directory":'C:\Download_test','download.prompt_for_download':False,"profile.managed_default_content_settings.images":2}設置2,將創建的下載部分的設置添加到option中
options.add_experimental_option('prefs',prefs)
# 打開網址
# browser.get('https://cn.bing.com/')
# 強制等待3秒
# 最大窗口
browser.maximize_window()
time.sleep(3)browser.get('https://im.qq.com/pcqq')

驅動下載位置:https://registry.npmmirror.com/binary.html?path=chromedriver/

4.實戰技巧

下面三行代碼解決:下載過程中出現"此類型的文件可能會損害您的計算機,請問您是選擇保留還是舍棄"

browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': "C:\Download_test"}}
command_result = browser.execute("send_command", params)
browser.find_element(By.CLASS_NAME,'download').click()

向下滑動(方法一)

js_button = "window.scrollTo(0,1000) "
browser.execute_script(js_button)
time.sleep(3)

向下滑動(方法二)元素聚焦

time.sleep(3)
try:target = browser.find_element(By.XPATH,'//*[@id="app"]/div[4]/div[2]/div[1]/h3')browser.execute_script("arguments[0].scrollIntoView();",target)
except:passtime.sleep(100)
browser.quit()

補充
“”"
使用selenium4的痛點:
1.網上資料較少,很多selenium3方法不可用
2.selenium3的下滑頁面方法失效
“”"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43287.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43287.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43287.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【面試八股文】每日一題:談談你對線程的理解

每日一題-Java核心-談談你對線程的理解【面試八股文】 Java線程是Java程序中的執行單元。一個Java程序可以同時運行多個線程,每個線程可以獨立執行不同的任務。線程的執行是并發的,即多個線程可以同時執行。 1. 線程的特點 Java中的線程有如下的特點 輕…

react-native-webview使用postMessage后H5不能監聽問題(iOS和安卓的兼容問題)

/* 監聽rn消息 */ const eventListener nativeEvent > {//解析數據actionType、extraconst {actionType, extra} nativeEvent.data && JSON.parse(nativeEvent.data) || {} } //安卓用document,ios用window window.addEventListener(message, eventLis…

Jenkins-發送郵件配置

在Jenkins構建執行完畢后,需要及時通知相關人員。因此在jenkins中是可以通過郵件通知的。 一、Jenkins自帶的郵件通知功能 找到manage Jenkins->Configure System,進行郵件配置: 2. 配置Jenkins自帶的郵箱信息 完成上面的配置后&#xf…

DiffusionDet: Diffusion Model for Object Detection

DiffusionDet: Diffusion Model for Object Detection 論文概述不同之處整體流程 論文題目:DiffusionDet: Diffusion Model for Object Detection 論文來源:arXiv preprint 2022 論文地址:https://arxiv.org/abs/2211.09788 論文代碼&#xf…

kubesphere 使用流水線對接 sonar

官方文檔:使用圖形編輯面板創建流水線 創建憑證 創建 sonar 憑證 創建 gitlab 憑證 創建流水線 創建流水線,編輯流水線 自定義流水線 拉取代碼 代理選 kubernetes,label 填maven 添加步驟 - git 填寫 git 地址,選…

CSS 背景屬性

前言 背景屬性 屬性說明background-color背景顏色background-image背景圖background-repeat背景圖平鋪方式background-position背景圖位置background-size背景圖縮放background-attachment背景圖固定background背景復合屬性 背景顏色 可以使用background-color屬性來設置背景…

【計算機設計大賽】國賽一等獎項目分享——基于多端融合的化工安全生產監管可視化系統

文章目錄 一、計算機設計大賽國賽一等獎二、項目背景三、項目簡介四、系統架構五、系統功能結構六、項目特色(1)多端融合(2)數據可視化(3)計算機視覺(目標檢測) 七、系統界面設計&am…

esp-idf的電源管理——軟件的總體結構

idf的電源管理在軟件上,從上到下可以分為三層: freeRTOS idle taskesp pmesp sleepesp sleep又可以進一步細分為兩層,分別是軟件sleep flow以及最終落實到硬件寄存器的rtc sleep。更具體的,函數調用關系如下: #mermaid-svg-WunrsW7XSArlvBnG {font-family:"trebuchet…

前端打開后端返回的HTML格式的數據

前端打開后端返回的 HTML格式 的數據: 后端返回的數據格式如下示例: 前端通過 js 方式處理(核心代碼如下) console.log(回調, path); // path 是后端返回的 HTML 格式數據// 必須要存進localstorage,否則會報錯&am…

步入React正殿 - State進階

目錄 擴展學習資料 State進階知識點 狀態更新擴展 shouldComponentUpdate PureComponent 為何使用不變數據【保證數據引用不會出錯】 單一數據源 /src/App.js /src/components/listItem.jsx 狀態提升 /src/components/navbar.jsx /src/components/listPage.jsx src/A…

Uniapp連接藍牙設備

一、效果圖 二、流程圖 三、實現 UI <uni-list><uni-list :border="true"><!-- 顯示圓形頭像 -->

C語言案例 判斷是否為回文數-06.1

題目&#xff1a;隨機輸入一個5位數&#xff0c;判斷它是不是回文數 步驟一&#xff1a;定義程序的目標 編寫C程序&#xff0c;隨機輸入一個5位數&#xff0c;判斷它是不是回文數 步驟二&#xff1a;程序設計 原理&#xff1a;即12321是回文數&#xff0c;個位與萬位相同&#…

SpringBoot + Vue 微人事(十)

職位管理前后端接口對接 先把table中的數據展示出來&#xff0c;table里面的數據實際上是positions里面的數據&#xff0c;就是要給positions:[] 賦上值 可以在methods中定義一個initPosition方法 methods:{//定義一個初始化positions的方法initPositions(){//發送一個get請求…

2.HTML、CSS

文章目錄 1.什么是HTML、CSS2.HTML的語法特點3.HTML的快速體驗4.開發工具推薦&#xff1a;VS Code5.基本標簽&樣式5.1.標題5.1.1.標題排版5.1.2.標題樣式5.1.3.超鏈接 5.2.正文5.2.1.正文排版5.2.2.頁面布局 表格、表單標簽表格標簽表單標簽 1.什么是HTML、CSS HTML即超文本…

在vue中如何重新渲染所有組件

文章目錄 一、在根組件中給router-view動態綁定上v-if。二、調用重新加載下級組件方法。 在有些需求情況下需要重新加載頁面或者觸發組件的生命周期&#xff0c;但是刷新對用戶體驗不太友好&#xff0c;這個時候我們可以通過provide/inject可以輕松實現跨級訪問祖先組件的數據&…

web JS高德地圖標點、點聚合、自定義圖標、自定義窗體信息、換膚等功能實現和高復用性組件封裝教程

文章目錄 前言一、點聚合是什么&#xff1f;二、開發前準備三、API示例1.引入高德地圖2.創建地圖實例3.添加標點4.刪除標點5.刪除所有標點&#xff08;覆蓋物&#xff09;6.聚合點7.自定義聚合點樣式8.清除聚合9.打開窗體信息 四、實戰開發需求要求效果圖如下&#xff1a;封裝思…

LeetCode1387 將整數按權重排序

思路 首先是這種計算權重的方式很有可能出現重復&#xff0c;所以需要記憶化搜索記憶化搜索&#xff1a;先查表再計算&#xff0c;先存表再返回。將整數 x 和計算的權重分別存儲數組的0和1的位置重寫compare將數組排序按規則排序返回結果 代碼 class Solution {private Hash…

(二)Git在公司中團隊內合作和跨團隊合作和分支操作的全部流程(一篇就夠)

&#xff08;一&#xff09;Git連接GitHub的全部流程https://blog.csdn.net/m0_65992672/article/details/132333727 團隊內協作 項目經理通過git push將代碼推送到遠程倉庫【也就是git、gitee等代碼托管中心】,推完以后組員可以通過git clone克隆下來代碼&#xff0c;如果組…

redis主從復制

隨著項目訪問量的增加&#xff0c;對Redis服務器的操作也越加頻繁&#xff0c;雖然Redis讀寫速度都很快&#xff0c;但是一定程度上也會造成一定的延時&#xff0c;那么為了解決訪問量大的問題&#xff0c;通常會采取的一種方式是主從架構Master/Slave&#xff0c;Master 以寫為…