Python selenium模块的安装和配置教程

一、selenium的安装以及简单应用

我们以谷歌浏览器的chromedriver为例

1、在Python虚拟环境中安装selenium模块

pip/pip3 install selenium

2、下载版本符合的webdriver

以chrome谷歌浏览器为例

查看谷歌浏览器的版本

鼠标点击右上角的竖排的三个点,然后选择“帮助”,选择“关于 Google Chrome”,进去之后即可查看谷歌浏览器的版本

 

访问下载chromedriver网站

访问chromedriver下载地址,点击进入不同版本的chromedriver下载页面

点击notes.txt进入版本说明页面 

 

查看chrome和chromedriver匹配的版本

 根据操作系统下载正确版本的chromedriver

解压压缩包后获取python代码可以调用的谷歌浏览器的webdriver可执行文件

  • windows为 chromedriver.exe
  • linux和macos为 chromedriver

chromedriver环境的配置

  • windows环境下需要将 chromedriver.exe 所在的目录设置为path环境变量中的路径
  • linux/mac环境下,将 chromedriver 所在的目录设置到系统的PATH环境值中

3、chromedriver环境配置的教程

windows环境下将 chromedriver.exe 所在的目录设置为path环境变量中的路径的过程

鼠标右键点击“Google Chrome” ,然后点击“打开文件所在位置”复制 chrome.exe 所在的文件路径

 接着打开“控制面板” 搜索输入 “环境变量” 并搜索,然后点击 “编辑系统环境变量”

 

 

二、selenium的简单使用

Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的。

Selenium 可以直接调用浏览 器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页 面,获取需要的数据,甚至页面截屏等。

我们可以使用selenium很容易完成之前编写的爬虫,接下来我们就来 看一下selenium的运行效果

接下来我们就通过代码来模拟百度搜索(展示效果)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import time

from selenium import webdriver

  

# 通过指定chromedriver的路径来实例化driver对象,chromedriver放在当前目录。

# driver = webdriver.Chrome(executable_path='./chromedriver')

# 这里的chromedriver已经添加环境变量

driver = webdriver.Chrome()

  

# 控制浏览器访问url地址

driver.get("https://www.baidu.com/")

time.sleep(3)

# 在百度搜索框中搜索'python'

driver.find_element_by_id('kw').send_keys('python')

# 点击'百度搜索'

driver.find_element_by_id('su').click()

time.sleep(6)

# 退出浏览器

driver.quit()

运行结果

 

webdriver.Chrome(executable_path='./chromedriver') 中executable参数指定的是下载好的

chromedriver文件的路径

driver.find_element_by_id('kw').send_keys('python') 定位id属性值是'kw'的标签,并向其中输入字符 串'python'

driver.find_element_by_id('su').click() 定位id属性值是su的标签,并点击

click函数作用是:触发标签的js的click事件

三、selenium提取数据

1、driver对象常用的属性和方法

在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法

  • driver.page_source 获取当前标签页浏览器渲染之后的网页源代码
  • driver.current_url获取当前标签页的url
  • driver.close() 关闭当前标签页,如果只个一个标签页则关闭整个浏览器
  • driver.quit() 关闭浏览器
  • driver.forward() 页面前进
  • driver.back() 页面后退
  • driver.screen_shot(img_name) 页面截图

示例

打印当前标签页的url

1

2

3

4

5

6

7

8

9

10

import time

from selenium import webdriver

  

driver = webdriver.Chrome()

# 控制浏览器访问url地址

driver.get("https://www.baidu.com/")

time.sleep(3)

# 打印当前标签页的url

print(driver.current_url)

driver.quit()

运行结果:

2、driver对象定位标签元素获取标签对象的方法

在selenium中可以通过多种方式来定位标签,返回标签元素对象

方式功能
find_element_by_id返回一个元素
find_element(s)_by_class_name根据类名获取元素列表
find_element(s)_by_name根据标签的name属性值返回包含标签对象元素的列表
find_element(s)_by_xpath返回一个包含元素的列表
find_element(s)_by_link_text根据连接文本获取元素列表
find_element(s)_by_partial_link_text根据链接包含的文本获取元素列表
find_element(s)_by_tag_name;根据标签名获取元素列表
find_element(s)_by_css_selector根据css选择器来获取元素列表

注意

find_element和find_elements的区别:

  • 多了个s就返回列表,没有s就返回匹配到的第一个标签对象
  • find_element匹配不到就抛出异常,find_elements匹配不到就返回空列表

by_link_text 和 by_partial_link_tex 的区别:全部文本和包含某个文本

以上函数的使用方法:

driver.find_element_by_id('id_str')

id_str是id值

示例

接下来我们就通过代码来模拟百度搜索(具体讲解)

首先我们先打开百度页面,然后点击网页检查 ,定位搜索框,可以看见搜索框的input标签的id值为kw

  • 于是开始编写基础代码
  • 通过driver.get()获取网页
  • 通过find_element_by_id('kw')定位搜索框
  • 通过.send_keys('python')向搜索框输入搜索信息

1

2

3

4

5

6

7

8

9

10

import time

from selenium import webdriver

  

driver = webdriver.Chrome()

  

# 控制浏览器访问url地址

driver.get("https://www.baidu.com/")

time.sleep(3)

# 在百度搜索框中搜索'python'

driver.find_element_by_id('kw').send_keys('python')

再定位搜索按钮:“百度一下” ,其id值为su

 

完善代码,通过 .click() 实现点击搜索

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

import time

from selenium import webdriver

  

driver = webdriver.Chrome()

  

# 控制浏览器访问url地址

driver.get("https://www.baidu.com/")

time.sleep(3)

# 在百度搜索框中搜索'python'

driver.find_element_by_id('kw').send_keys('python')

# 点击'百度搜索'

driver.find_element_by_id('su').click()

time.sleep(6)

# 退出浏览器

driver.quit()

运行结果

3、标签对象提取文本内容和属性值

find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法

对元素执行点击操作: element.click()

对定位到的标签对象进行点击操作

向输入框输入数据: element.send_keys(data)

对定位到的标签对象输入数据

获取文本: element.text

通过定位获取的标签对象的 text 属性,获取文本内容

获取属性值: element.get_attribute("属性名")

通过定位获取的标签对象的 get_attribute 函数,传入属性名,来获取属性的值

获取 “百度一下”搜索按钮的value属性值

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

import time

from selenium import webdriver

  

driver = webdriver.Chrome()

  

# 控制浏览器访问url地址

driver.get("https://www.baidu.com/")

time.sleep(3)

# 点击'百度搜索',用ele变量接受获取的元素

ele = driver.find_element_by_id('su')

print(ele.get_attribute('value'))

time.sleep(6)

# 退出浏览器

driver.quit()

运行结果

四、selenium无头模式

我们知道,当我们利用 dirver.get() 获取网页时会自动打开一个网页,但是有时候我们可能不需要通过打开浏览器获取数据,于是就可以通过给driver对象设置无头模式 。

1

2

3

4

# 给driver对象设置无头模式

op = webdriver.ChromeOptions()

op.add_argument('--headless')

driver = webdriver.Chrome(options=op)

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

P1192 台阶问题————C++

目录 台阶问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 解题思路Code运行结果 台阶问题 题目描述 有 N N N 级台阶,你一开始在底部,每次可以向上迈 1 ∼ K 1\sim K 1∼K 级台阶,问到达第 N N N 级台阶有多少种不同方…

华为设备命令最全大合集(2024新版),赶紧收藏!

01、华为交换机基础配置命令 01 常用命令视图 02 创建VLAN //用户视图,一般display命令查看信息比较多。 system-view //准备进入系统视图。 [Huawei]vlan 100 //创建vlan 100。 [Huawei-vlan100]quit //退回系统视图。 03 将端口加入到vlan中 [Huawei] inter…

【C语言】字符串 和 ctype.h 中的函数 练习

前面总结了有关字符串和ctype.h的文章,接下来就以几个例子来练习一下,以巩固之前的基础概念。注意:以下示例都有更简单更高效的解决方法,但本次仅以巩固基础为目的,所以方法可能稍作繁琐 Leetcode 344.反转字符串 编…

Spring Boot 整合多 Redis 数据源配置及操作

Spring Boot 整合多 Redis 数据源配置及操作 简介 本文档介绍了如何在Spring Boot应用程序中配置和操作多个Redis数据源。通过配置多个RedisConnectionFactory和RedisTemplate,可以实现对多个Redis数据源的整合,以便在应用程序中灵活地使用不同的Redis…

windows2012 安装mysql5.7

windows2012 安装mysql5.7 1.安装1.解压文件夹2.把my文件拷入没有sql安装目录3.编辑my文件4.按照下方进行配置5.cmd进入bin目录6.出现丢失文件7.安装这个文件即可解决8.开始进行安装,输入mysqld install9.初始化mysql(mysqld --initialize --console&…

python识别验证码+灰度图片base64转换图片

一、为后面识别验证码准备 1、图片base64转换为 上文中的base64,后面的就是包含Base64编码的PNG图像的字符串复制下来 import base64 from PIL import Image import io# 这里是你的Base64编码的字符串 base64_data "iVBORw0KGgoAAAANSUhEUgAAAG8AAAAkCAIAAAAIOPOYAAAJ1E…

提供电商Api接口-100种接口,淘宝,1688,抖音商品详情数据安全,稳定,支持高并发

Java是一种高级编程语言,由Sun Microsystems公司于1995年推出,现在属于Oracle公司开发和维护。Java以平台无关性、面向对象、安全性、可移植性和高性能著称,广泛用于桌面应用程序、嵌入式系统、企业级服务、Android移动应用程序等。 接口是Ja…

软件测试方法分类-按测试对象划分

接上一篇,下来我们再细讲,第四个维度的分类, 软件测试方法分类-按测试对象划分 本章节重点介绍非功能测试的相关知识,因为功能测试的基本在之前的分类都是有涉及的。 一、非功能测试 1,性能测试(Performance Testing) 检查系统是否满足需求规格说明书中规定的性能。 …

Clion STM32 开发环境配置教程

Clion STM32 开发环境配置教程 STM32 CubeMX(6.5) 下载固件库 若固件库还未下载,可在启动界面点击,INSTALL/REMOVE下载所需要的固件库 选中对应固件库,点击Install即可 Clion(2023.3.1) 略 …

从零实现一套低代码(保姆级教程) --- 【14】实现头像组件和徽标容器

前话 文章开始前&#xff0c;先解决一下之前的某个错误。 在InputComponent中&#xff0c;如果是弹窗类型的组件&#xff0c;我们点击按钮会把ModalComponent组件弹出来。同时&#xff0c;我们要把key传进去。 return (<div>{getComponent()}// 把valueKey穿过去<Mo…

Java集合框架和泛型

1.Java集合框架 架构图&#xff1a; Java的集合框架是一组用于存储和操作数据的类和接口。它提供了各种数据结构&#xff0c;如列表、集合、映射等&#xff0c;以及用于操作这些数据结构的算法和工具。Java集合框架位于Java.util包中&#xff0c;并且是Java编程中常用的核心组…

软件质效领航者!ONES 获中国信通院「软件质效技术创新」优秀案例奖

近日&#xff0c;由中国信息通信研究院、中国通信标准化协会联合主办的 2023 系统稳定性与精益软件工程大会-AI 赋能软件质效专场暨云上软件工程社区年会在北京召开&#xff0c;会上正式公布了第二届「软件质效领航者」优秀案例的评选结果。 凭借产品及服务的成熟度、典范性和…

thinkcmf 配置移动端模板

1.找到tinkcmf/data/config/template.php 文件 cmf_moblie_default_theme > cffff_m, 2. 找到thinkcmf/vendor/thinkcmf/src/common.php // $theme config(template.cmf_default_theme);if (cmf_is_mobile()) {$theme config(template.cmf_moblie_default_theme);} el…

python股票分析挖掘预测技术指标知识之均线指标详解(6)

本人股市多年的老韭菜&#xff0c;各种股票分析书籍&#xff0c;技术指标书籍阅历无数&#xff0c;萌发想法&#xff0c;何不自己开发个股票预测分析软件&#xff0c;选择python因为够强大&#xff0c;它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

计算机毕业论文内容参考|基于区块链技术的电子健康记录系统的设计与实现

文章目录 摘要前言绪论课题背景国内外相关研究课题内容区块链技术介绍系统分析用户需求分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于区块链技术的电子健康记录系统的设计与实现。该系统旨在解决传统电子健康记录系统存在的数据安全性、数据隐私性和数据互操作性…

【springboot+mybatis实现CURD模版项目-Jesus】

springbootmybatis实现CURD模版项目-Jesus STEP 1 项目创建 1.1 新建Spring Initializr项目   1.2 选择需要的依赖 springboot有2.7.2直接选272STEP 2 配置更改 2.1更改maven配置   2.2 检查项目配置jdk、sdk、jre版本一致   2.3 检查pom文件&#xff0c;Maven-Reload pr…

鸿蒙OpenHarmony技术—消息机制实现

用户态应用发送消息到驱动 用户态主要代码 struct HdfIoService *serv HdfIoServiceBind(SAMPLE_SERVICE_NAME);......ret serv->dispatcher->Dispatch(&serv->object, SAMPLE_WRITE_READ, data, reply); if (ret ! HDF_SUCCESS) {HDF_LOGE("fail to sen…

通往人工智能的 Go 之路

Agency 该库旨在为那些希望通过清晰、高效且符合 Go 语言惯例的方法来探索大型语言模型&#xff08;LLMs&#xff09;和其他生成式人工智能的开发人员而设计。 特点 纯 Go 语言&#xff1a;快速、轻量级&#xff0c;静态类型&#xff0c;无需涉及 Python 或 JavaScript编写清晰…

人工智能趋势报告解读:ai野蛮式生长的背后是机遇还是危机?

近期&#xff0c;Enterprise WordPress发布了生成式人工智能在营销中的应用程度的报告&#xff0c;这是一个人工智能迅猛发展的时代&#xff0c;目前人工智能已经广泛运用到内容创作等领域&#xff0c;可以预见的是人工智能及其扩展应用还将延伸到我们工作与生活中的方方面面。…

gradle --腾讯国内镜像源

distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-7.3.3-bin.zip 1.进入到自己工程目录下的wrapper文件夹。 2.编辑gradle-wrapper文件 使用https://mirrors.cloud.tencent.com/gradle/gradle-4.6-all.zip来代替原来的 https\://services.gradle.org/distri…