Selenium基础:自动化你的网页交互!

在构建Python爬虫的过程中,你可能会遇到需要与网页进行交互的情况,比如填充表单、点击按钮等。这时,Selenium库就成了你的有力工具。Selenium是一个强大的工具,能够模拟用户在网页上的各种操作。本篇博客将向你介绍Selenium的基础用法,以及如何在你的爬虫中使用Selenium进行自动化操作。

Selenium简介

Selenium是一个用于Web应用程序测试的工具,它直接运行在浏览器中,就像真正的用户在操作一样。它支持多种浏览器,包括Chrome、Firefox、Edge等。

要使用Selenium,你需要安装两样东西:

  1. Selenium Python库

  2. 对应于你使用的浏览器的WebDriver

安装Selenium库

通过pip安装Selenium库相当简单:

shell复制

pip install selenium

下载WebDriver

WebDriver是一个允许开发者编程方式控制浏览器的驱动。比如,对于Chrome,你需要下载ChromeDriver。确保下载的版本与你的浏览器版本匹配。

下载后,将WebDriver放在PATH环境变量所指的目录,或者直接在代码中指定其路径。

Selenium的基本使用

让我们用一个简单的例子来展示如何打开一个网页。

python复制

from selenium import webdriver
# 指定ChromeDriver的路径driver_path = '/path/to/chromedriver'
# 初始化WebDriverdriver = webdriver.Chrome(driver_path)
# 打开网页driver.get('https://www.example.com')
# 打印网页标题print(driver.title)
# 关闭浏览器driver.quit()

在上面的代码中,我们创建了一个Selenium WebDriver实例,并打开了一个网页,然后打印其标题,并在最后关闭浏览器。

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

与网页元素交互

Selenium可以模拟各种网页操作,下面是一些常见的交互方式:

查找元素

python复制

from selenium.webdriver.common.by import By
# 通过id查找元素element = driver.find_element(By.ID, 'id_of_element')
# 通过name查找元素element = driver.find_element(By.NAME, 'name_of_element')
# 通过xpath查找元素element = driver.find_element(By.XPATH, 'xpath_of_element')

发送文本到输入框

python复制

# 假设我们找到了一个输入框input_box = driver.find_element(By.ID, 'input_box_id')
# 发送文本到输入框input_box.send_keys('Hello, Selenium!')

点击按钮

python复制​​​​​​​

# 假设我们找到了一个按钮button = driver.find_element(By.ID, 'button_id')
# 点击按钮button.click()

等待元素加载

有时候页面不会立即加载所有的元素,这时候我们可以使用Selenium的等待功能。

python复制​​​​​​​

from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC
# 等待直到元素可见element = WebDriverWait(driver, 10).until(    EC.presence_of_element_located((By.ID, 'myDynamicElement')))

这段代码会等待直到ID为'myDynamicElement'的元素在DOM中出现,或者超时(本例中为10秒)。

完整代码案例

下面是一个使用Selenium进行自动化操作的完整代码案例,模拟了搜索操作。

python复制​​​​​​​

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keys
# 初始化WebDriverdriver = webdriver.Chrome('/path/to/chromedriver')
# 打开Googledriver.get('https://www.google.com')
# 等待搜索框加载完成search_box = WebDriverWait(driver, 10).until(    EC.presence_of_element_located((By.NAME, 'q')))
# 输入搜索内容并回车search_box.send_keys('Selenium Python' + Keys.RETURN)
# 等待搜索结果加载完成results = WebDriverWait(driver, 10).until(    EC.presence_of_element_located((By.ID, 'search')))
# 打印搜索结果print(results.text)
# 关闭浏览器driver.quit()

在这个例子中,我们打开了Google,等待搜索框加载,进行搜索,并打印出搜索结果。

总结

本篇博客介绍了如何使用Selenium库进行Web自动化测试,包括基础设置、元素交互、等待条件和一个实际的搜索案例。通过Selenium,你可以模拟几乎所有的用户交互,这对于复杂的网页操作和动态内容抓取至关重要。掌握Selenium对于构建高级爬虫来说是一个重要的技能。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

EdgeX Foundry 设备服务

文章目录 1.设备服务2.设备配置文件3.设备资源4.资源属性(Attributes)5.资源属性(Properties)6.设备命令7.资源操作8.REST 命令端点9.推送事件 EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.…

好用的AI模型集合

AI-Chat 这个网站提供的AI-Chat 3.5和AI-Chat 4.0聊天机器人,每天都可以免费使用。 不管是学习、工作还是日常生活,都能给我们带来很大的帮助,效率真的可以说是翻倍了。我觉得,如果你想让自己的生活更加高效、更加有序&#xff0…

WEB漏洞 SSRF简单入门实践

一、漏洞原理 SSRF 服务端请求伪造 原理:在某些网站中提供了从其他服务器获取数据的功能,攻击者能通过构造恶意的URL参数,恶意利用后可作为代理攻击远程或本地的服务器。 二、SSRF的利用 1.对目标外网、内网进行端口扫描。 2.攻击内网或本地的…

戏说c第二十六篇: 测试完备性衡量(代码覆盖率)

前言 师弟:“师兄,我又被鄙视了。说我的系统太差,测试不过关。” 我:“怎么说?” 师弟:“每次发布版本给程夏,都被她发现一些bug,太丢人了。师兄,有什么方法来衡量测试的…

css实现背景渐变叠加

线性渐变效果图: .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#fff 30%),linear-gradient(to right,pink,skyblue);}径像渐变效果图: .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#…

【SVN】使用TortoiseGit删除Git分支

使用TortoiseGit删除Git分支 前言 平时我在进行开发的时候,比如需要开发一个新功能,这里以蘑菇博客开发服务网关-gateway功能为例 一般我都会在原来master分支的基础上,然后拉取一个新的分支【gateway】,然后在 gateway分支上进…

langchain学习笔记(七)

RunnablePassthrough: Passing data through | 🦜️🔗 Langchain 1、RunnablePassthrough可以在不改变或添加额外键的情况下传递输入。通常和RunnableParallel结合使用去分配数值给到字典的新键 两种方式调用RunnablePassthrough (1&#…

FL Studio21编曲制作软件中文版2024最新版本功能详细介绍

一、软件概述 FL Studio 21,全称Fruity Loops Studio 21,是一款功能强大的编曲制作软件,被广泛应用于音乐创作、编曲、录音、混音和后期制作等领域。其中文版为中国的音乐制作人和爱好者提供了更加便捷的操作体验。 FL Studio 21 Win-安装包…

P10166 [DTCPC 2024] 环

解题思路 满足的序列即为环若图上有环,则代价为0若无环,则在图上已有的边在添加一条回边可形成环对所有的点由小到大排序由于环的大小可以为2初值设为,先不管最小点之间是否有边,反正不会更劣通过拓扑排序找环,在找环…

AI技术大揭秘!你不可不知的顶级大模型

在这个数字化飞速发展的时代,AI大模型以其惊人的应用范围和深远的影响力,正逐渐成为各行各业的革命性力量。想象一下,在一个晴朗的午后,一个智能客服系统正轻松地处理着成千上万的客户咨询,不仅回答速度快捷&#xff0…

http状态,cookie、session、token的对比

http是无状态的,也就是说断开会话了服务器就不记得任何事情了,但这样对于用户会很麻烦,因为要不停输入用户名和密码 cookie是放在浏览器里的数据,第一次访问后服务器会set cookie,然后浏览器保存这个cookie&#xff0…

win10如何添加指纹登陆

1、首先进入设置,进入下一个设置页面 2、在下一个设置页面内,我们直接使用右上角的搜索框,输入“指纹/finger”进行搜索。回车之后进入设置指纹登陆选项 3、设置指纹登陆的前期是设置好你的密码和pin码(先要设定登录密码和pin码),这里pin和密码都可以直接登陆我们的win10,设…

qt 5.15版本安装

1.qt5.15版本安装 2.安装慢时,切换到清华镜像源:.\qt-unified-windows-x64-online.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt/ 3.没有qt 5.15版本在旁边进行筛选,只选archive

YOLOv9:使用可编程梯度信息学习您想学习的内容

摘要 arxiv.org/pdf/2402.13616.pdf 当今的深度学习方法侧重于如何设计最合适的目标函数,以便模型的预测结果能最接近于实际结果。同时,还必须设计一个适当的架构,以便于获取足够的预测信息。现有的方法忽略了一个事实,即当输入数据经历层层特征提取和空间变换时,会损失…

机器人与AGI会撞出什么火花?

真正的科技变革是不是就要来临了?各方大佬都开始布局机器人,对于普通人的就业会造成什么影响? ​ 优牛企讯-企业动态信息监控专家 在优牛企讯-企业动态监控专家搜索可知,全国目前的机器人公司已经达到了26401家,近一年…

关于机械臂的控制和基于tftp文件的上传和下载功能的实现

1、TCP客户端控制机械臂代码实现&#xff1a; #include <myhead.h> #define IP "192.168.126.58" #define PORT 8888#define CLI_IP "192.168.126.91" //客户端IP #define CLI_PORT 6666 //客户端端口号int main(int argc, const char *argv[]) {…

【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制

本系列文章跟随《MetaGPT多智能体课程》&#xff08;https://github.com/datawhalechina/hugging-multi-agent&#xff09;&#xff0c;深入理解并实践多智能体系统的开发。 本文为该课程的第四章&#xff08;多智能体开发&#xff09;的第一篇笔记。主要记录下多智能体的运行…

C/C++基础语法

C/C基础语法 文章目录 C/C基础语法头文件经典问题链表链表基础操作 秒数转换闰年斐波那契数列打印n阶菱形曼哈顿距离菱形图案的定义大数计算 输入输出格式化输入输出getline()函数解决cin只读入一个单词的问题fgets读入整行输出字符数组&#xff08;两种方式puts和printf&#…

day10_oop

今日内容 零、 复习昨日 一、作业 二、继承 三、重写 四、this和super 五、访问修饰符 零、 复习昨日 数组创建的两种方式 new int[3];new int[]{值,值2,…}存值: 数组名[下标] 值 构造方法什么作用?有参无参构造什么区别? 创建对象无参创建出的对象属性是默认值有参创建出的…

【力扣白嫖日记】602.好友申请II:谁有最多的好友

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 602.好友申请II&#xff1a;谁有最多的好友 表&#xff1a;RequestAccepted 列名类型requester_idintaccept…