Python Selenium:Web自动化测试与爬虫开发

Python Selenium:Web自动化测试与爬虫开发

      • Python Selenium:Web自动化测试与爬虫开发
        • 安装Selenium
        • 设置WebDriver
        • 基础示例
        • 页面元素交互
        • 处理JavaScript和Cookies
        • 浏览器控制
        • 屏幕截图
        • Headless Mode
        • 结束会话
        • 错误处理与调试

***本文由AI辅助生成***

Python Selenium:Web自动化测试与爬虫开发

Selenium是一个强大的工具套件,主要用于自动化Web浏览器操作。它支持多种编程语言,包括Python,广泛应用于自动化Web应用测试、网页抓取等领域。Selenium WebDriver 可以驱动无界面的浏览器(Headless Browser)或真实浏览器进行操作。

安装Selenium

首先,你需要安装Selenium。如果你使用的是Python,可以在命令行中输入以下命令进行安装:

pip install selenium
设置WebDriver

为了使用Selenium,你需要对应所选浏览器的Driver。例如,如果你选择Chrome,则需要下载 ChromeDriver,并将其路径添加到系统的 PATH 环境变量中,或者直接在Python脚本中指定路径。

基础示例

下面是一个使用Selenium启动Google Chrome并访问百度的Python示例:

from selenium import webdriverdriver = webdriver.Chrome()  # 或 webdriver.Firefox(), 根据你的浏览器选择
driver.get('http://www.baidu.com')
print(driver.title)
driver.quit()
页面元素交互

假设我们要在一个表单中填写用户名和密码并提交:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECusername = driver.find_element(By.ID, "username")
password = driver.find_element(By.NAME, "password")username.send_keys("your_username")
password.send_keys("your_password")login_button = driver.find_element(By.XPATH, "//button[@type='submit']")
login_button.click()# 显示等待直到元素可见
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "some_id"))
)
处理JavaScript和Cookies

Selenium可以执行JavaScript,这对于某些动态加载的内容特别有用:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")  # 滚动到底部cookies = driver.get_cookies()
for cookie in cookies:print(cookie)
浏览器控制

除了模拟登录和点击按钮外,还可以控制浏览器前进、后退、刷新等:

driver.back()
driver.forward()
driver.refresh()
屏幕截图

保存网页快照:

driver.save_screenshot('screenshot.png')
Headless Mode

在不开启图形界面的情况下运行Selenium:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
结束会话

不要忘记结束webdriver会话:

driver.quit()
错误处理与调试

在编写Selenium脚本时可能会遇到网络超时等问题,适当增加错误处理逻辑:

try:element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:driver.quit()

Selenium提供了丰富的API和功能,结合Python的强大编程能力,可以实现复杂的Web自动化任务,如自动填写表单、截屏、上传下载文件、模拟人类行为等。无论是用于自动化测试还是数据抓取,Selenium都是一个不可或缺的工具。

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

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

相关文章

Redis最终篇分布式锁以及数据一致性

在前三篇我们几乎说完了Redis的所有的基础知识以及Redis怎么实现高可用性,那么在这一篇文章中的话我们主要就是说明如果我们使用Redis出现什么问题以及解决方案是什么,这个如果在未来的工作中也有可能会遇到,希望对看这篇博客的人有帮助,话不多说直接开干 一.Hotkey以及BigKey…

GPT中转站技术架构

本文介绍阿波罗AI中转站(https://api.ablai.top/)的技术架构,该中转API的技术架构采用了分布式架构、智能调度和API中转等技术,确保了全球范围内的高效访问和稳定运行。以下是对该技术架构的详细分析: 分布式架构 分…

【强化学习的数学原理】第02课-贝尔曼公式-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰 文章目录 一、为什么return重要?如何计算return?二、state value的定义三、Bellman公式的详细推导四、公式向量形式…

[less] Operation on an invalid type

我这个是升级项目的时候遇到的,要从 scss 升级到 less,然后代码中就报了这个错误 我说一下代码的错误过程,但是这里没有复现,因为我原本报错的代码要复杂很多,而且是公司代码,不方便透露,这是我…

ssm面向品牌会员的在线商城小程序

摘要 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。它将是直接管理面向品牌会员的在线商城小程序的最新形式。本小程序是以面向品牌会员的在线商城管理为目标,使用 java技术制…

国土变更调查拓扑错误自动化修复工具的研究

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、拓扑错误的形成原因 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭长 5.细小碎面 6.更新层相互重叠 二、修复成果展示 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭…

WPS 加载项开发说明wpsjs

wpsjs几个常用的CMD命令: 1.打开cmd输入命令测试版本号 npm -v 2.首次安装nodejs,npm默认国外镜像,包下载较慢时,可切换到国内镜像 //下载速度较慢时可切换国内镜像 npm config set registry https://registry.npmmirror.com …

Javaweb梳理18——JavaScript

今日目标 掌握 JavaScript 的基础语法掌握 JavaScript 的常用对象(Array、String)能根据需求灵活运用定时器及通过 js 代码进行页面跳转能通过DOM 对象对标签进行常规操作掌握常用的事件能独立完成表单校验案例 18.1 JavaScript简介 JavaScript 是一门跨…

android 使用MediaPlayer实现音乐播放--权限请求

在Android应用中,获取本地音乐文件的权限是实现音乐扫描功能的关键步骤之一。随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步…

GPT系列文章

GPT系列文章 GPT1 GPT1是由OpenAI公司发表在2018年要早于我们之前介绍的所熟知的BERT系列文章。总结:GPT 是一种半监督学习,采用两阶段任务模型,通过使用无监督的 Pre-training 和有监督的 Fine-tuning 来实现强大的自然语言理解。在 Pre-t…

NUXT3学习日记四(路由中间件、导航守卫)

前言 在 Nuxt 3 中,中间件(Middleware)是用于在页面渲染之前或导航发生之前执行的函数。它们允许你在路由切换时执行逻辑,像是身份验证、重定向、权限控制、数据预加载等任务。中间件可以被全局使用,也可以只在特定页…

汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力

故障现象  一辆2012款路虎揽胜运动版车,搭载3.0T柴油发动机(型号为306DT),累计行驶里程约为10.2万km。车主进厂反映,车辆行驶中加速无力,且发动机故障灯异常点亮。 故障诊断 接车后试车,发动…

网络安全与加密

1.Base64简单说明描述:Base64可以成为密码学的基石,非常重要。特点:可以将任意的二进制数据进行Base64编码结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符:A~Z a~z 0~9 / 对文件进行base64编码…

C语言:数组转换指针的时机

1、指针数组 如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组,指针数组的定义形式一般为: dataType *arrayName[length];[ ]的优先级高于*,该定义形式应该理解为: dataType *(arrayName[length])…

UE5 DownloadImage加载jpg失败的解决方法

DownloadImage加载jpg失败的解决方法 现象解决方案具体方法 现象 用UE自带的 DownloadImage 无法下载成功,从 failure 引脚出来。 接入一个由监控器自动保存起的图像,有些可以正常加载成功,有些无法加载成功。 经调查问题出现在,…

使用 helm 部署 gitlab

一、下载 Gitlab chart 进入 artifacthub 官网 选择你想要的版本(我选择的chart版本是 8.4.0 , gitlab 版本是17.4.0 ) 进入到控制台,添加helm仓库 如果你想不改任何配置,你可以执行安装命令,等待安装即可helm instal…

FreeRTOS信号量(一)

目录 什么是信号量? 1.信号量简介 2.二值信号量 2.1二值信号量简介 1. 首先,创建时,二值信号量默认无效 2. 之后中断释放信号量 3.信号量获取成功 4、任务再次进入阻塞态 2.2 创建二值信号量 1、函数vSemaphoreCreateBinary () 2、…

51单片机-独立按键与数码管联动

独立键盘和矩阵键盘检测原理及实现 键盘的分类:编码键盘和非编码键盘 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如:计算机键盘。靠软件编程识别的称为非编码键盘;在单片机组成…

springboot课程答疑系统(代码+数据库+LW)

摘要 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势,针对这个问题开发一个专门适应师生交流形式的网站。本文介绍了课程答疑系统的开发全过程。通过分析企业对于课程答疑系统的需求,创建了一个计算机管理课程答疑系统的方案。文章…

解锁业务成功:大数据和 AI 如何协作以释放战略洞察

在当今这个数据主导的时代,大数据与AI的协同作用对于寻求竞争优势的组织而言愈发关键。大数据以其庞大的数据量、多样化的数据类型以及高速的数据生成能力,为AI算法提供了丰富的原材料,助力其挖掘出有价值的洞见,推动明智决策的制…