记录一次centos 使用selenium运行环境

这里写自定义目录标题

  • 宝塔面板 安装 selenium
    • 安装google-chrome

宝塔面板 安装 selenium

安装google-chrome

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

查看chrome版本 google-chrome --version

下载对应chrome版本的chromedriver
wget http://npm.taobao.org/mirrors/chromedriver/88.0.4324.27/chromedriver_linux64.zip
https://googlechromelabs.github.io/chrome-for-testing/#stable
在这里插入图片描述

将下载的文件解压,放在如下位置
unzip chromedriver_linux64.zip
mv chromedriver /usr/bin/
给予执行权限
chmod +x /usr/bin/chromedriver

运行代码,验证是否成功,linux必须是这样的(新建一个.py文件,拷进去)
#!/user/bin/python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
ch_options = Options()
ch_options.add_argument(“–headless”) # => 为Chrome配置无头模式
ch_options.add_argument(‘–no-sandbox’)
ch_options.add_argument(‘–disable-gpu’)
ch_options.add_argument(‘–disable-dev-shm-usage’)
browser = webdriver.Chrome(options=ch_options)
browser.get(“http://www.baidu.com”)
print(browser.title)

from selenium import webdriver
import time
import json
import refrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECoptions = webdriver.ChromeOptions()  # 创建浏览器对象之前,创建options功能对象
options.add_argument("--headless")  # 添加无界面功能参数
driver = webdriver.Chrome(options=options)  # 构造浏览器对象,打开浏览器# 创建webdriver 对象,指明使用chrome 浏览器驱动
# driver = webdriver.Chrome()# 调用webdriver 对象的get方法,可以让浏览器打开指定网址
driver.get('https://URL')
# 首先清除由于浏览器打开已有的cookies
# wd.delete_all_cookies()
# time.sleep(10)
# 打开cookie文本,使用已保存的cookie登录
with open('cookies.txt', 'r') as f:# 使用json读取cookies 注意读取的是文件 所以用load而不是loadscookies_list = json.load(f)for cookie in cookies_list:driver.add_cookie(cookie)# time.sleep(3)
driver.implicitly_wait(2)
# 等待按钮出现并点击
try:# 等待快速验证按钮出现,这里使用显式等待verify_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'verifyBtn')))# 模拟点击快速验证按钮verify_btn.click()print("快速验证按钮已点击")
except Exception as e:print("点击快速验证按钮时出错:", e)time.sleep(1)# driver.refresh()  # 刷新页面# 打印网页渲染后的源代码
# print(driver.page_source)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VScode上无法运行TSC命令,Typescript

如何解决问题 第一步:使用 winx 快捷键,会出现如下弹窗,鼠标左键单击Windows PowerShell 即可打开shell 第二步:运行 set-ExecutionPolicy RemoteSigned 命令,在询问更改执行策略的时候选择敲Y或者A 第三步&#xff…

技术分享 | MySQL 的几种数据迁移方案

1需求背景 应用侧的同学需要对数据进行导出和导入,于是跑来找 DBA 咨询问题:MySQL 如何导入大批量的数据? 应用侧目前的方式: mysqldump 工具 select outfile 语句 图形化管理工具(MySQL Workbench、Navicat 、DBe…

【C语言初阶-结构体】关于结构体的声明定义、结构体传参详解

目录 1. 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问 2.1(.)操作符 2.2(->)操作符 3.结构体传参 1. 结构体的声明 1.1 结构的基础知识 结构体是一些值的集合&…

uniapp vue3怎么调用uni-popup组件的this.$refs.message.open() ?

vue2代码 <!-- 提示信息弹窗 --><uni-popup ref"message" type"message"><uni-popup-message :type"msgType" :message"messageText" :duration"2000"></uni-popup-message></uni-popup>typ…

算法笔记刷题日记——3.简单入门模拟 3.2 查找元素

刷题日记 3.2 查找元素 B1041 B1004 B1028 B1032 A1011 A1006 A1036 错题记录 B1028 人口普查 某城镇进行人口普查&#xff0c;得到了全体居民的生日。现请你写个程序&#xff0c;找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的&#xff0c;但不一定是合理的…

你为什么不喜欢关电脑?我只是想第二天能够快速进入工作状态

程序员不喜欢关电脑的主要原因就是&#xff1a;想第二天能够快速进入工作状态。大部分不喜欢关电脑的程序员都是很敬业的程序员。 程序员的电脑上安装了很多软件&#xff0c;包括IDE、数据库客户端、Redis客户端、思维导图、画图工具、数据库设计工具等。通常在工作的时候也会…

开关电源学习之Boost电路

如果我们需要给一个输入电压为5V的芯片供电&#xff0c;而我们只有一个3.3V的电源&#xff0c;那怎么办&#xff1f; 我们能不能把3.3V的电压升到5V&#xff1f; 一、电感的简介 而在升压的电路设计方案中&#xff0c;使用到一个重要的元器件&#xff1a;电感。 电感的特性…

【PyQt】05-多线程

文章目录 前言一、什么是单线程、多线程二、代码现象示例多线程代码运行结果 总结 前言 文章开始还是解释一下&#xff0c;这是跟着王铭东老师学习的。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、什么是单线程、多线程 单线程 在Python中&am…

TCP和UDP相关问题(重点)(1)

1.TCP与UDP的区别&#xff1f; TCP和UDP都是传输层的协议&#xff0c;对于TCP来说在传输数据前是必须要建立连接的&#xff0c;而UDP在传输数据前不需要建立连接&#xff1b;TCP是可靠传输服务&#xff0c;有三次握手、数据的确认、重传等机制&#xff0c;而UDP是不可靠的&…

PDF文件格式(一):交叉引用流

在PDF-1.5版本之前&#xff0c;对象的交叉引用信息是存储在交叉引用表(cross-reference table)中的。在PDF-1.5版本之后&#xff0c;引进了交叉引用流(cross-reference stream)对象&#xff0c;可以用它来存储对象的交叉引用信息&#xff0c;就像交叉引用表的功能一样。 采用交…

C遗漏知识(个人向)

之前C语言遗漏的一些。 数据在内存中的存储 原码、反码、补码 整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 正整数的原、反、补码都相同。 负整数的三种表⽰⽅法各不相同。 原码&#xff1a;直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。 反码&…

力扣383-赎金信

赎金信 题目链接 解题思路 统计magazine中字符出现的字符&#xff0c;用哈希表保存遍历ransomNote&#xff0c;记录其中出现的字符&#xff0c;出现一次&#xff0c;哈希表删除对应的字符遍历哈希表&#xff0c;如果有的字符出现的次数为负数&#xff0c;则不能拼凑出目标字符…

Javascript入门学(基础)

软件篇 JS基础语法第一天 1.javascript介绍 1.1 js是什么 是什么 是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互效果&#xff0c;而html和css是标记性语言&#xff0c;并非编程语言有什么用 js的组成 htmlcssjs实现按钮点击功能 …

Vision Transfomer系列第一节---从0到1的源码实现

本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 这里写目录标题 准备逐步源码实现数据集读取VIt模型搭建hand类别和位置编码类别编码位置编码 blocksheadVIT整体 Runner(参考mmlab)可视化 总结 准备 本博客完成Vision Transfomer(VIT)模型的搭建和flowers数…

什么是大模型

目录 让你了解什么是大模型什么是大模型&#xff1f;大模型的应用场景常见的大模型技术实例分析&#xff1a;深度学习语言模型GPT-3 让你了解什么是大模型 大模型&#xff08;Big Model&#xff09;是指在机器学习和人工智能领域中处理大规模数据和复杂模型的一种方法或技术。…

股票K线简介

股票K线&#xff08;K-Line&#xff09;是用于表示股票价格走势的图形&#xff0c;主要由四个关键价格点组成&#xff1a;开盘价、收盘价、最高价和最低价。K线图广泛应用于股票市场技术分析中&#xff0c;它提供了丰富的信息&#xff0c;帮助分析师和投资者理解市场的行情走势…

一周学会Django5 Python Web开发-Django5介绍及安装

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计10条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

leetcode 74.搜索二维矩阵

本题其实就是一个变形的二分查找而已。这里不采用两次二分或者一次二分的方法了&#xff0c;leetcode上是很详细的&#xff0c;这里就讲讲普通的思路是怎样的。 思路&#xff1a;首先就是把二维数组化为一维数组&#xff0c;这个时候一维数组需要开的大一些&#xff0c;不然的…

算法练习-四数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

“过年买年货,花光了我的年终奖”

【潮汐商业评论/原创】 前脚刚进家门&#xff0c;后脚快递电话一个接着一个。 临近春节&#xff0c;Julia是提前批回家的年轻人&#xff0c;与Julia一同到家的还有她的年货。上至大小家电&#xff0c;下到坚果零食&#xff0c;短短几天快递就堆满了客厅。 吃的喝的还能理解&…