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.mzph.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 以写为…