自动化测试工具-Selenium:WebDriver的API/方法使用全解

我们上一篇文章介绍了Selenium的三大组件,其中介绍了WebDriver是最重要的组件。在这里,我们将看到WebDriver常用的API/方法(注:这里使用Python语言来进行演示)。

1. WebDriver创建

打开VSCode,我们首先引入webdriver:

from selenium import webdriver

引入了webdriver,我们就可以根据目标浏览器创建对应浏览器的webdriver类:

我们可以看到,webdriver支持多种浏览器,除此之外,还包括远程调用等功能,这里我们以操作目标为Edge浏览器为例子,来创建Edge的测试类:

我们可以看到,返回的是一个browser变量。我们来看browser支持哪些函数:

2. browser函数全解

browser的函数大致可以分为两大类,第一类是用于定位浏览器中的标签函数,第二类就是其他函数。

2.1 browser标签函数

新版本的Selenium使用了新的调用方式,首先我们引入By:

from selenium.webdriver.common.by import By

这样我们就可以调用了By,我们来查看By调用的参数是哪些: 

2.1.1 CLASS_NAME函数

使用方法:

driver.find_element(By.CLASS_NAME,"text-color")

他会找到class=“text-color”的标签,同时提供以下点击事件:

我们这里使用点击事件——click()。

我们模拟selenium打开百度搜索页面,同时点击关于百度这个标签,代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import timedriver = webdriver.Edge()
driver.get("https://www.baidu.com")driver.find_element(By.CLASS_NAME,"text-color").click()time.sleep(10)driver.close()

点击运行,得到以下效果:

2.1.2 ID 函数

ID函数是Selenium给我们提供操作Web标签为对应ID的函数,这个函数很常用,使用方法如下:

driver.find_element(By.ID,"kw")

我们来一个编程示例,找到百度输入框,并点击搜索,输入框中输入信息为“selenium官网”。

那么我们需要先找到输入框的ID,我们打开检查:

我们可以看到,输入框对应的id名为kw。那么我们编写的程序如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import timedriver = webdriver.Edge()
driver.get("https://www.baidu.com")driver.find_element(By.ID,"kw").send_keys("selenium官网")time.sleep(10)driver.close()

这里的send_keys的作用就是将“selenium官网”填入输入框并搜索。

程序运行的效果为:

2.1.3 TAG_NAME 函数

TAG_NAME函数用来指定标签名字,不能用来指定标签内的属性。最重要的一点,TAG_NAME指定的标签是唯一的,这个是必须的。

TAG_NAME的使用方法如下:

driver.find_element(By.TAG_NAME,'area')

我们举例,使用Selenium点击如下图标,预期效果会跳转到百度热搜:

编写的代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import timedriver = webdriver.Edge()
driver.get("https://www.baidu.com")time.sleep(3)driver.find_element(By.TAG_NAME,'area').click()time.sleep(10)driver.close()

成功的效果:

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

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

相关文章

金融CRM有用吗?金融行业CRM有哪些功能

市场形式波诡云谲,金融行业也面临着资源体系分散、竞争力后继不足、未知风险无法规避等问题。金融企业该如何解决这些问题,或许可以了解一下CRM管理系统,和其提供的金融行业CRM解决方案。 金融行业是银行业、保险业、信托业、证券业和租赁业…

2023年终总结 | 四平八稳

年度回顾 年度关键词:四平八稳 百科解读:形容物体放置的平稳或言行稳当;也指做事但求无过,不思进取。 我在写这篇文章就在思考用什么关键词来描述我过去这一年,似乎这一年没有特别让我特别惊喜的事情,无论是…

NLP论文阅读记录 - AAAI-23 | 01 Cogito Ergo Summ:通过语义解析图和一致性奖励对生物医学论文进行抽象总结

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1抽象概括2.2图增强摘要2.3 抽象概括的强化学习 三.本文方法COGITOERGOSUMM 框架3.1 问题陈述3.2 图表构建**事件图****AMR 图****图合并和重新连接**Model文本编码器图编码器解码器…

SPI 串行外设接口

SPI 是什么? SPI 是串行外设接口( Serial Peripheral Interface)的缩写,是一种同步串行数据传输协议, 是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线&#xf…

Hypervisor Display架构

Hypervisor Display架构部分 1,所有LA侧的APP与显示相关的调用最终都会交由SurfaceFlinger处理 2,SurfaceFlinger会最终调用android.hardware.graphics.composer2.4-service服务 3,android.hardware.graphics.composer2.4-service服务会调用G…

突破性能瓶颈:使用Asyncio构建高并发Python应用程序

是一种处理多个任务同时执行的编程方式,在Python中,asyncio是一种用于实现异步编程的强大工具。asyncio基于协程(coroutine)的概念,能够高效地处理I/O密集型任务。本文将介绍asyncio的基本原理和使用方法。 为啥需要a…

[Unity错误解决]There are 2 audio listeners in the scene.

There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene. 从组件中找出包含 Audio Listener 的,只激活一个,其他的关掉

NativePHP:使用 PHP 构建桌面应用程序

PHP 在我心中占据着特殊的位置。它是我的第一份工作,我记得我在家里花了无数个小时做一些小项目。我非常想用 PHP 创建桌面应用程序,但我从来没有做到过。 现在,感谢 NativePHP,我可以了。 NativePHP 追随 Slack、Discord 和 Tre…

STM32的以太网外设+PHY(LAN8720)使用详解(2):硬件设计

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 PHY(LAN8720)硬件配置 1.1 硬件配置引脚说明 在LAN8720上电或复位时会读取一些特定引脚的电平,根据电平来进行硬件配置。LAN8720的引脚分布如下&…

电子合同在物流运输中的场景应用

物流运输行业发展迅速,形成了采购、运输、仓储、配送、代理等全面的产业体系,在业务的开展过程中,各类纸质文件的签章管理如承运协议、运输合同、电子回单、入仓及出仓单据、融资保理协议、代理合作协议、商家入驻协议、员工劳动合同等&#…

构建数字化金融生态系统:云原生的创新方法

内容来自演讲:曾祥龙 | DaoCloud | 解决方案架构师 摘要 本文探讨了金融企业在实施云原生体系时面临的挑战,包括复杂性、安全、数据持久化、服务网格使用和高可用容灾架构等。针对网络管理复杂性,文章提出了Spiderpool开源项目,…

22 3GPP在SHF频段基于中继的5G高速列车场景中的标准化

文章目录 信道模型实验μ参考信号初始接入方法波形比较 RRH:remote radio head 远程无线头 HTS:high speed train 高速移动列车 信道模型 考虑搭配RRH和车载中继站之间的LOS路径以及各种环境(开放或峡谷),在本次实验场…