selenium在Pycharm中结合python的基本使用、交互、无界面访问

下载

下载与浏览器匹配的浏览器驱动文件,这里一定注意的是,要选择和浏览器版本号相同的驱动程序,否则后面会有很多问题。

(1)浏览器(以google为例)版本号的查询:

我这里的版本号是124版本,所以要下载对应版本号的驱动文件

1.ChromeDriver 国内下载地址:Get WebDriver - Download WebDriver ChromeDriver

2.版本号在114之前的选择如下地址:chromedriver.storage.googleapis.com/index.html

安装selenium

下载selenium包:

pip install selenium

建议安装较低版本的selenium,这里建议安装4.5.0版本,否则可能会出现闪退问题

pip install selenium==4.5.0

selenium入门

(1)将下载的chromedriver包解压得到chromedriver.exe,并放到要使用的当前目录下:

(2)在所需要使用的文件中导入selenium

# (1) 导入selenium
from selenium import webdriver

(3)创建浏览器操作对象

# (2) 创建浏览器操作对象
browser = webdriver.Chrome()

(4) 访问网站

# 访问网址
url = 'https://www.jd.com/'    #以访问京东为例
browser.get(url)

(5) page_source获取网页源码

# 获取网网页源码 page_source获取网页源码
content = browser.page_source
print(content)

技元素定位方法

需要先导入By

from selenium.webdriver.common.by import By

(1)使用id来找到对象

button = driver.find_element(By.ID, 'su')
print(button)

(2)根据xpath语句来获取对象

button = driver.find_element(By.XPATH, '//input[@id="su"]')
print(button)

(3)根据bs4表示语句来获取对象

button = driver.find_element(By.CSS_SELECTOR, '#su')
print(button)

(4)根据标签名字来获取对象

button = driver.find_element(By.TAG_NAME, 'input')
print(button)

(5)根据标签名字来获取对象[返回列表,多个]

button = driver.find_elements(By.TAG_NAME, 'input')
print(button)

(6)链接文本

button = driver.find_elements(By.LINK_TEXT, '新闻')
print(button)

交互

(1)在文本框中输入内容【send_keys】

# 获取文本框对象
input  = broswer.find_element(By.ID, 'kw')
# 在文本框中输入周杰伦
content = input.send_keys('袁隆平')

(2)点击按钮

# 获取百度一下的按钮
baiduyixia  = broswer.find_element(By.ID, 'su')
# 点击一下按钮
baiduyixia.click()

(3)滑到底部[执行脚本]

js_bottom = 'document.documentElement.scrollTop=100000'
broswer.execute_script(js_bottom)

(4)获取下一页按钮并执行点击

# 创建浏览器对象
broswer = webdriver.Chrome()
broswer.forward()  #前进

(5)回退到上一页

broswer = webdriver.Chrome()
broswer.back()  #后退

(6)关闭浏览器

broswer = webdriver.Chrome()
broswer.quit()   #关闭浏览器

优化

(1)handless

      selenium默认是有页面的,所以会存在加载大量css和js。针对这一问题,selenium下的handless可以实现无界面访问,提高访问速度和效率。

# 基本配制
def share_browser():options = webdriver.ChromeOptions()  # 创建配置对象options.add_argument('--headless')  # 无头参数,浏览器隐藏在后台运行options.add_argument('--window-size=1920x1080')  # 设置浏览器分辨率(窗口大小)options.add_argument('--disable-gpu')  # 禁用GPU加速browser = webdriver.Chrome(options=options)  # 创建浏览器对象return browser

以访问csdn为例演示一个小案例:

from selenium import webdriverdef share_browser():options = webdriver.ChromeOptions()  # 创建配置对象options.add_argument('--headless')  # 无头参数,浏览器隐藏在后台运行options.add_argument('--window-size=1920x1080')  # 设置浏览器分辨率(窗口大小)options.add_argument('--disable-gpu')  # 禁用GPU加速browser = webdriver.Chrome(options=options)  # 创建浏览器对象return browserbroswer = share_browser()url = 'https://www.csdn.net/'    # 访问csdn页面broswer.get(url)
broswer.save_screenshot('csdn.png')

快照

 关于options的更多配置,请看:Selenium自动化教程02:浏览器options配置及常用的操作方法_selenium options-CSDN博客

(2) phantomjs

phantomjs也可以实现无界面,但现已经被启用,且操作较handless为麻烦,固不推荐。

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

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

相关文章

MySQL数据库安装——zip压缩包形式

安装压缩包zip形式的 MySQL 8数据库 一 、先进入官网下载 https://dev.mysql.com/downloads/mysql/ 二、解压到某个文件夹 我解压到了D:\mysql\mysql8 下面 然后在这个文件夹下手动创建 my.ini 文件和 data 文件夹 my.ini 内容如下: 注意 basedir 和 datadi…

vue做导入导出excel文档

系统中经常会遇到要实现批量导入/导出数据的功能,导入就需要先下载一个模板,然后在模板文件中填写内容,最后导入模板,导出就可能是下载一个excel文件。 1、导出 新建一个export.js文件如下: import {MessageBox,Mes…

文件摆渡:安全、高效的摆渡系统助力提升效率

很多组织和企业都会通过网络隔离的方式来保护内部的数据,网络隔离可以是物理隔离,也可以是逻辑隔离,如使用防火墙、VPN、DMZ等技术手段来实现,隔离之后还会去寻找文件摆渡方式,来保障日常的业务和经营需求。 进行网络隔…

线上社交app的搭建,圈子社交系统,小程序+app+H5三端,源码交付,支持二开!

在科技飞速发展的大背景下,年轻人社交不再局限于面对面,线上社交app已深入各大年轻人的手机中。相比于传统交友方式,线上社交app为用户提供了更加新奇的交友体验。同时,它还可以吸引更多的朋友,提高用户的整体交友体验…

Spring Boot整合Redisson的两种方式

项目场景 Spring Boot整合Redisson的两种方式,方式一直接使用yml配置,方式二创建RedissonConfig配置类。 前言 redisson和redis区别: Redis是一个开源的内存数据库,支持多种数据类型,如字符串、哈希、列表、集合和有序…

python-pytorch 如何使用python库Netron查看模型结构(以pytorch官网模型为例)0.9.2

Netron查看模型结构 参照模型安装Netron写netron代码运行查看结果需要关注的地方 2024年4月27日14:32:30----0.9.2 参照模型 以pytorch官网的tutorial为观察对象,链接是https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html 模型代…

数码摄影色彩构成,数码相机色彩管理

一、资料描述 本套摄影色彩资料,大小58.54M,共有6个文件。 二、资料目录 《抽象彩色摄影集》.阿瑟.pdf 《色彩构成》.pdf 《色彩学》.星云.扫描版.pdf 《摄影色彩构成》.pdf 《数码相机色彩管理》.pdf 数码摄影进阶之4《色彩篇》.pdf 三、资料下…

Qt 把.exe打包成安装文件形式

目录 1.下载工具 Qt Installer Framework2.将bin文件添加到环境变量3.拷贝startmenu示例-备用4.准备Qt Release打包好的程序5.把Release打包好的程序放到packages\org.qtproject.ifw.example\data文件夹下6.生成安装包7.修改安装包图标8.修改主程序程序安装引导-创建快捷键9.添…

FFmpeg下载教程(Windows版)

文章目录 下载地址步骤 下载地址 https://ffmpeg.org/download.html 步骤

win c++使用lua环境配置 5.3.5版本

编译lua 下载lua源码,github仓库 使用vs编译源码,新建一个静态库项目(只会生成lib文件),想要dll的话就新建dll项目(有一个lib文件和dll文件) 把lua源码下面的文件夹都是,复制到vs项目中 lib目录是我手动…

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock:读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async:异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件,A线程进行读取操作,B…

牛客社区帖子分页显示实现

下图是前端分页的组件: 下面是对应的静态html页面,每一个方块,都是一个a标签,可以点击,执行的链接是/community/index,GET请求,拼接的参数是current,也就是pageNum,只需…

ACE框架学习3

ACE Acceptor-Connector框架 该框架实现 Acceptor-Connector 模式,该模式解除了“网络化应用中的协作对端服务的连接和初始化”与“连接和初始化之后它们所执行的处理”的耦合。Acceptor-Connector 框架允许成用独立于它们所提供的服务来配置其连接布局的关键属性。…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作, commit:命令用于将你的代码变更保存到本地代码仓库中,它创建了一个新的提交(commit…

ubuntu 复制文件路径

前言 我打算搞一个ubuntu右键复制文件路径的插件,但是找不到,只能平替 这个配置,可以把文件拖拽到cmd窗口,然后就直接cmd输出文件路径 配置 cd ~ vim .bashrc 在文件结尾添加 cdd () { ddirname "$1"; echo …

通过filebeat实现对docker服务的通用日志收集

平台 依赖 linux docker docker-compose 或者 docker compose 镜像 docker.elastic.co/beats/filebeat:8.12.2 docker.elastic.co/beats/kibana:8.12.2 docker.elastic.co/beats/elasticsearch:8.12.2 正文 背景 对于有自建机房的公司来说,如果公司的运维技术…

应用实战 | 别踩白块小游戏,邀请大家来PK挑战~

“踩白块会输”是一个简单的微信小程序游戏,灵感来自当年火热的别踩白块游戏,程序内分成三个模块:手残模式、经典模式和极速模式,分别对应由易到难的三种玩法,可以查看游戏排名。动画效果采用JS实现,小程序…

opencv可视化图片-----c++

可视化图片 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>// 将数据类型转换为字符串 std::string opencvTool::type2str(int type) {std::string r;uchar depth type & CV_MAT_DEPTH_MASK;uchar chans 1 (typ…

java开发之路——用户管理中心_简单初始化

用户管理中心_简单初始化 (一) 初始化项目1. 使用 Ant Design Pro(现成的管理系统) 进行前端初始化2. 后端初始化三种初始化java项目 (二) 遇到的问题【问题1】Ant design pro页面打不开&#xff0c;一直在budiling控制台出现错误error-./src/components/index.ts【问题2】初始…

数据结构和算法:贪心

贪心算法 贪心算法是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 贪心算法和动态规划都常用于解决优化问题。它们之间存在一…