Python的web自动化学习(一)Selenium库的工作原理

news2024/11/16 7:19:51

Python的web自动化学习(一)Selenium库的工作原理
首发2023-07-31 11:01·云中随心而记
后续会根据持续学习来更新,大家一起学习

引言:

Selenium是一个流行的自动化测试工具,用于模拟和控制浏览器行为,常用于Web应用程序的功能测试和验收测试。Selenium支持多种编程语言,包括Python、Java、C#等,并提供了一组API,用于操作浏览器的各种行为。

Selenium库的工作原理主要包括以下几个关键组件:
在这里插入图片描述

我们以谷歌浏览器为例来一起进行学习:

WebDriver:

WebDriver是Selenium的核心组件,它提供了与各种浏览器的交互能力。通过WebDriver,Selenium可以自动化启动浏览器、打开URL、填写表单、点击按钮、获取元素属性等等操作。

浏览器驱动:

Selenium需要与浏览器进行交互,所以需要安装相应的浏览器驱动。不同的浏览器需要对应不同的浏览器驱动,比如Chrome需要ChromeDriver,Firefox需要GeckoDriver。驱动程序将接收来自Selenium的指令,并在浏览器中执行相应的操作

下面介绍两个常用的驱动下载地址:

Chrome浏览器驱动下载地址:
http://chromedriver.storage.googleapis.com/index.htm
Firefox(火狐)浏览器驱动:
https://github.com/mozilla/geckodriver/releases/

定位元素:
Selenium可以通过各种方式来定位Web页面上的元素,比如ID、名称、类名、链接文本等等。通过定位元素,Selenium可以准确地找到需要操作的页面元素。

前面文章有介绍过元素定位 可参考:
https://www.toutiao.com/article/7260753838771290661/

执行操作:
一旦定位到Web元素,Selenium可以执行多种操作,如点击、输入文本、获取元素属性等。这些操作可以模拟用户在浏览器中的行为。以下是实例说明

点击操作:

Chrome浏览器:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

button = driver.find_element_by_xpath("//button[@id='myButton']")
button.click()

Firefox浏览器:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://example.com")

button = driver.find_element_by_xpath("//button[@id='myButton']")
button.click()

输入文本操作:

Chrome浏览器:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

input_box = driver.find_element_by_xpath("//input[@id='myInput']")
input_box.send_keys("Hello World")

Firefox浏览器:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://example.com")

input_box = driver.find_element_by_xpath("//input[@id='myInput']")
input_box.send_keys("Hello World")

获取元素属性:

Chrome浏览器:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

element = driver.find_element_by_xpath("//div[@class='myDiv']")
text = element.text

Firefox浏览器:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://example.com")

element = driver.find_element_by_xpath("//div[@class='myDiv']")
text = element.text

断言和验证:在自动化测试中,验证页面上的特定行为和结果非常重要。Selenium提供了丰富的断言和验证方法,以确保应用程序的正确性。

页面标题断言:

Chrome浏览器:

from selenium import webdriver
import assert

driver = webdriver.Chrome()
driver.get("https://example.com")

title = driver.title
assert "Example" in title

Firefox浏览器:

from selenium import webdriver
import assert

driver = webdriver.Firefox()
driver.get("https://example.com")

title = driver.title
assert "Example" in title

页面文本断言:

Chrome浏览器:

from selenium import webdriver
import assert

driver = webdriver.Chrome()
driver.get("https://example.com")

element = driver.find_element_by_xpath("//div[@class='myDiv']")
text = element.text
assert "Hello world" in text

Firefox浏览器:

from selenium import webdriver
import assert

driver = webdriver.Firefox()
driver.get("https://example.com")

element = driver.find_element_by_xpath("//div[@class='myDiv']")
text = element.text
assert "Hello world" in text

这些示例演示了在不同的浏览器中执行断言操作。无论使用哪种浏览器驱动,您可以使用相同的断言方法来验证页面标题、文本等内容。只需根据所使用的浏览器类型选择适当的驱动程序,然后使用相同的断言语句来进行验证。

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

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

相关文章

美创科技列为IDC中国数据安全市场代表厂商

近日,国际权威IT咨询机构IDC发布《中国数据安全市场发展趋势,2023》报告,报告针对中国数据安全市场的发展现状进行调研,明确了最终用户数据安全建设的痛点、难点,阐述了市场中各技术服务提供商的服务方案和优势。 美创…

24 个常见的 Docker 疑难杂症处理技巧!!!记得点赞收藏

1. Docker 迁移存储目录 默认情况系统会将 Docker 容器存放在 /var/lib/docker 目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快满了,随即上去看了下,发现 /var/lib/docker 这个目录特别大。由上述原因,我们都…

【openGauss】一主一备实现主备节点切换实验(switchover、failover)

openGauss在运行过程中,数据库管理员可能需要手工对数据库节点做主备切换。例如发现数据库节点主备failover后需要恢复原有的主备角色,或怀疑硬件故障需要手动进行主备切换。 级联备机不能直接转换为主机,只能先通过switchover或者failover成…

抖音上的影视解说是怎么配音的?

抖音影视解说的配音是从各种渠道配的。其中,最常见的方法是使用 AI 配音。AI 配音可以通过在线配音平台或语音合成软件实现。这些软件可以生成各种声音,包括电影解说、主播、卡通、游戏等。此外,一些抖音影视解说也使用了真人配音。真人配音通…

代码训练营第49天:leetcode139单词划分|多重背包|背包讲解

leetcode139&#xff1a;单词划分 文章讲解&#xff1a;leetcode139 多重背包&#xff1a;文章讲解 背包讲解&#xff1a;文章讲解 1&#xff0c;leetcode139 单词划分 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set…

Redis 主从

目录 ​编辑一、构建主从架构 1、集群结构 2、准备实例和配置 &#xff08;1&#xff09;创建目录 &#xff08;2&#xff09;修改原始配置 &#xff08;3&#xff09;拷贝配置文件到每个实例目录 &#xff08;4&#xff09;修改每个实例的端口&#xff0c;工作目录 &a…

SpringBoot-集成Minio

官方文档&#xff1a;Kubernetes 的 MinIO 对象存储 — MinIO Object Storage for Kubernetes 一、简介 Minio 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频…

Spring Boot和XXL-Job:高效定时任务管理

Spring Boot和XXL-Job&#xff1a;高效定时任务管理 前言第一&#xff1a;XXL-Job简介什么是XXL-job对比别的任务调度 第二&#xff1a; springboot整合XXL-job配置XXL-Job Admin拉取XXL-Job代码修改拉取的配置 配置执行器自己的项目如何整合maven依赖properties文件配置执行器…

工厂干洗店洗鞋店系统,校园洗护小程序来了

洗鞋店小程序&#xff0c;干洗店软件&#xff0c;洗护行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发&#xff0c;成品软件开发 洗衣工厂软件、功能强大&#xff01; 包含以下主要功能&#xff1a; * 用户选择洗护用品&#x…

Azure - 机器学习:创建机器学习所需资源,配置工作区

目录 一、Azure机器学习工作区与计算实例简要介绍工作区计算实例 二、创建工作区1. 登录到 Azure 机器学习工作室2. 选择“创建工作区”3. 提供以下信息来配置新工作区&#xff1a;4. 选择“创建”以创建工作区 三、创建计算实例四、工作室实战4.1 工作室快速导览4.2 从示例笔记…

CV算法工程师的LLM日志(1)微调技术——即插即用的neft-Tune【原理代码】

CV算法的LLM领域日志 目前维护的CV方向开源项目暂时暂停&#xff0c;原因是现在在做LLM方向的研发工作&#xff0c;所以需要时间消化前沿技术和总结经验&#xff0c;最近看到了一个非常简单的LLM训练Trick 分享一下&#xff0c;后续会逐渐把自己使用的一些LLM范式技术原理和代…

部分背包问题细节(贪心)

有一种情况是&#xff0c;背包可以把金币全部拿走&#xff1a; 如果num小于0则返回值

重症医学科常用评估量表汇总,建议收藏!

根据重症医学科医生的量表使用情况&#xff0c;笔者整理了10个重症医学科常用量表&#xff0c;可在线评测直接出结果&#xff0c;可转发使用&#xff0c;可生成二维码使用&#xff0c;可创建项目进行数据管理&#xff0c;有需要的小伙伴赶紧收藏&#xff01; 简明急性生理功能评…

Rocksdb LSM Tree Compaction策略

RocksDB读写简介 直接画图说明。这张图取自Flink PMC大佬Stefan Richter在Flink Forward 2018演讲的PPT&#xff0c;笔者重画了一下。 RocksDB的写缓存&#xff08;即LSM树的最低一级&#xff09;名为memtable&#xff0c;对应HBase的MemStore&#xff1b;读缓存名为block cac…

基于QT的图书管理系统

获取代码&#xff1a; 知识付费时代&#xff0c;低价有偿获取代码&#xff0c;请理解&#xff01; (1) 下载链接: 后发(2) 添加博主微信获取&#xff08;有偿&#xff09;,备注来源: mryang511688(3) 快速扫码咨询&#xff1a; 项目描述 技术&#xff1a;C、QT等 摘要&#…

(1)(1.8) Hondex声纳

文章目录 前言 1 推荐的硬件 2 连接和配置 3 参数说明 前言 Hondex HE-8S 是一款回声测深仪&#xff08;又称水下声纳&#xff09;&#xff0c;测深范围 100m&#xff0c;内置 GPS 和 NMEA 输出&#xff0c;可由 ArduPilot 使用。其他 Hondex 声纳也可以使用&#xff0c;但…

redis学习(三)——java整合redis

Jedis Jedis可以用于java连接redis数据库 新建一个maven项目&#xff0c;导入Jedis依赖 <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>test…

mcgsTpc屏与施耐德TM218PLC通讯说明

一、 硬件连接 1、PLC通讯接口说明&#xff1a; 2、通讯电缆图&#xff1a; 二、PLC设置 1. 配置端口&#xff1a; 双击串行线路—弹出右侧设置窗口---设置串口通讯参数 2. 添加MODBUS协议。 ① 右击串口线路&#xff0c;选择添加设备&#xff1a; ② 选择现场总线&#xf…

Studio One6.5中文版本更新下载

供所有 Studio One 6 和 Studio 用户下载&#xff0c;以下是部分改进&#xff01; Studio One 6.5 更新功能&#xff1a; 空间音频制作工作流程与杜比全景声集成 支持杜比全景声双耳耳机监听 字幕和功能铺增强功能 整合杜比全景声的空间音频制作工作流程 Studio One 6.5…