WebDriver核心方法和属性:掌握自动化测试的利器

在自动化测试中,Selenium WebDriver是一个非常重要的工具。它提供了一种方式来模拟用户与浏览器的交互,从而进行各种操作,如点击按钮、输入文本等。本文将介绍WebDriver的核心方法和属性,以及如何使用它们。

1. 启动和关闭浏览器

在使用WebDriver之前,我们需要先启动一个浏览器。这可以通过调用WebDriver的get方法来实现。例如,如果我们想要启动Chrome浏览器,我们可以这样做:

from selenium import webdriverdriver = webdriver.Chrome()

当我们完成所有的操作后,我们需要关闭浏览器。这可以通过调用WebDriver的quit方法来实现:

driver.quit()

2. 导航到网页

使用WebDriver,我们可以很容易地导航到任何一个网页。这可以通过调用WebDriver的get方法来实现。例如,如果我们想要导航到Google的主页,我们可以这样做:

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

3. 查找元素

在网页上,我们经常需要查找特定的元素,如按钮、链接等。这可以通过调用WebDriver的各种查找方法来实现。例如,我们可以使用find_element_by_id方法来查找具有特定ID的元素:

selenium3之前的版本:

element = driver.find_element_by_id("my-button")

我们还可以使用find_element_by_name、find_element_by_class_name、find_element_by_tag_name、find_element_by_link_text等方法来查找元素。

selenium4版本

ID——driver.find_element(By.ID,'value')
xpath——driver.find_element(By.xpath,'value')
css selector——driver.find_element(By.CSS_SELECTOR,'value')
class name——driver.find_element(By.CLASS_NAME,'value')
name——driver.find_element(By.NAME,'value')
link text——driver.find_element(By.LINK_TEXT,'value')
partial link text——driver.find_element(By.PARTIAL_LINK_TEXT,'value')
tag name——driver.find_element(By.TAG_NAME,'value')
unicode——driver.find_element(By.UNICODE,'value')

4. 操作元素

找到元素后,我们可以对其进行各种操作,如点击、输入文本等。这可以通过调用WebElement的方法来实现。例如,我们可以使用click方法来点击一个按钮:

element.click()

我们还可以使用send_keys方法来输入文本:

element.send_keys("Hello, World!")

5. 获取元素的文本和属性

有时候,我们需要获取元素的文本或属性。这可以通过调用WebElement的方法来实现。例如,我们可以使用get_attribute方法来获取元素的属性:

attribute = element.get_attribute("href")

我们还可以使用text属性来获取元素的文本:

text = element.text

6. 处理弹出窗口和警告框

在网页上,我们经常会遇到弹出窗口和警告框。这可以通过调用WebDriver的switch_to方法来处理。例如,我们可以使用switch_to.alert方法来处理警告框:

alert = driver.switch_to.alert
alert.accept()  # 接受警告框
alert.dismiss()  # 取消警告框

我们还可以使用switch_to.window方法来处理弹出窗口:

for handle in driver.window_handles:  # 切换到新的窗口句柄(即新的窗口)driver.switch_to.window(handle)  # 切换到新的窗口句柄(即新的窗口)# 在新窗口中执行操作...

7. 处理下拉列表和复选框等控件

在网页上,我们经常会遇到下拉列表、复选框等控件。这可以通过调用WebElement的方法来处理。例如,我们可以使用select_by_visible_text方法来选择下拉列表中的选项:

element.select_by_visible_text("Option 1")  # 选择“Option 1”选项

我们还可以使用is_selected方法来检查复选框是否被选中:

if element.is_selected():  # 如果复选框被选中...else...如果复选框未被选中...

8. 处理文件上传和下载操作

在网页上,我们经常需要进行文件上传和下载操作。这可以通过调用WebElement的方法来处理。例如,我们可以使用send_keys方法来上传文件:

element.send_keys("/path/to/file")  # 上传文件“/path/to/file”到输入框中...

整体示例:

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import Byclass TestCase(object):def __init__(self):self.driver = webdriver.Chrome()  # 创建一个Chrome浏览器实例self.driver.get("https://www.baidu.com/")  # 打开百度首页self.driver.maximize_window()  # 窗口最大化sleep(1)  # 等待1秒def test_prop(self):'''常见属性:return:'''print(self.driver.name)  # 打印浏览器名称print(self.driver.current_url)  # 打印当前URLprint(self.driver.title)  # 打印当前页面标题print(self.driver.window_handles)  # 打印当前窗口所有句柄print(self.driver.page_source)  # 打印当前页面源码self.driver.find_element(by=By.ID, value="su").click()  # 点击搜索按钮self.driver.quite()  # 关闭浏览器def test_method(self):'''常见方法:return:'''self.driver.find_element(by=By.ID, value="kw").send_keys("selenium")  # 在搜索框中输入文本self.driver.find_element(by=By.ID, value="su").click()  # 点击搜索按钮sleep(3)  # 等待3秒self.driver.back()  # 返回上一页sleep(3)  # 等待3秒self.driver.refresh()  # 刷新页面sleep(3)  # 等待3秒self.driver.forward()  # 前进到下一个页面self.driver.close()  # 只关闭当前tabself.driver.quite()  # 关闭浏览器

         总结:掌握WebDriver的核心方法和属性是进行自动化测试的基础,可以帮助我们轻松地模拟用户与浏览器的交互,执行各种操作。

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

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

相关文章

使用es256算法生成jwt

1、使用hutool来做 1、先去jwt解密/加密 - bejson在线工具弄个公私钥 2、导入hutool maven <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency><depe…

高项备考葵花宝典-项目进度管理输入、输出、工具和技术(中,很详细考试必过)

项目进度管理的目标是使项目按时完成。有效的进度管理是项目管理成功的关键之一&#xff0c;进度问题在项目生命周期内引起的冲突最多。 小型项目中&#xff0c;定义活动、排列活动顺序、估算活动持续时间及制定进度模型形成进度计划等过程的联系非常密切&#xff0c;可以视为一…

Pytorch中的resize和reshape

torch.reshape() 官方文档的大致意思是&#xff1a; 返回与输入具有相同数据和元素数量的张量&#xff0c;但是具有指定形状。如果可能&#xff0c;返回的张量将是输入的视图&#xff0c;也就是说原本的tensor并没有被改变&#xff0c;如果想要改变那么就将改变的tensor赋值给…

情深不必纠缠

那一年&#xff0c;男孩女孩在万千人中相遇了。多年后女人的一封邮件&#xff0c;让男人与女人的灵魂相遇了。他们无缘夫妻&#xff0c;却发现彼此是灵魂的陪伴。不能携手相守&#xff0c;却懂得彼此的心灵。 有一天&#xff0c;女人告诉男人要回家了&#xff0c;问男人心里会不…

ejs —— 三目运算符的用法

EJS&#xff08;Embedded JavaScript&#xff09;是一种简单的模板语言&#xff0c;它允许将JavaScript代码嵌入到HTML中。在EJS中&#xff0c;<%、<%和<%-是用于将JavaScript代码嵌入到模板中的语法。 <%&#xff1a;这是EJS的输出表达式&#xff0c;用于将变量的…

阿里云安装docker

文章目录 一、 yum 进行安装&#xff08;os版本 CentOS 7&#xff09; 推荐二、 apt-get 进行安装(os版本 Ubuntu 14.04/16.04&#xff09;三、测试四、阿里云docker加速 一、 yum 进行安装&#xff08;os版本 CentOS 7&#xff09; 推荐 # step 1: 安装必要的一些系统工具 su…

<HarmonyOS第一课>应用服务上架【课后考核】

【习题】HarmonyOS应用/元服务上架 判断题 元服务发布的国家与地区仅限于“中国大陆” 正确(True) 编译打包的软件包存放在项目目录build > outputs > default下 正确(True) 单选题 创建应用时&#xff0c;应用包名需要和app.json5或者config.json文件中哪个字段保持…

VMware安装Ubuntu20.04并使用Xshell连接虚拟机

文章目录 虚拟机环境准备重置虚拟网络适配器属性&#xff08;可选&#xff09;配置NAT模式的静态IP创建虚拟机虚拟机安装配置 Xshell连接虚拟机 虚拟机环境准备 VMware WorkStation Pro 17.5&#xff1a;https://customerconnect.vmware.com/cn/downloads/details?downloadGr…

基于Java旅游信息管理系统

基于Java旅游信息管理系统 功能需求 1、旅游目的地管理&#xff1a;系统需要能够记录和管理各个旅游目的地的详细信息&#xff0c;包括景点介绍、交通方式、住宿推荐等。管理员可以添加、编辑和删除目的地信息。 2、旅游线路规划&#xff1a;系统需要提供旅游线路规划功能&a…

C++类名后面跟大括号和跟小括号的区别

在 C 中&#xff0c;类名后面跟着大括号 {} 和小括号 () 有不同的含义和作用。 大括号 {}&#xff1a; 初始化对象&#xff1a;当在声明类对象时使用大括号 {} 时&#xff0c;这表示对对象进行初始化。这种方式也称为列表初始化或者统一初始化。示例&#xff1a;MyClass obj{};…

网上下载的pdf文件,为什么不能复制文字?

不知道大家有没有到过这种情况&#xff1f;在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很可能是…

AlexNet

概念 过拟合:根本原因是特征维度过多&#xff0c;模型假设过于复杂&#xff0c;参数过多&#xff0c;训练数据过少&#xff0c;噪声过多&#xff0c;导致拟合的函数完美的预测训练集&#xff0c;但对新数据的测试集预测结果差。 过度的拟合了训练数据&#xff0c;而没有考虑到…

29、卷积 - 参数 padding 的作用

在卷积过程中,Padding(填充)是一个关键的概念,它对于保留输入信息和有效地处理边缘信息至关重要。 1、Padding是什么? Padding 指的是在输入图像的周围添加额外的像素值,用来以扩大输入图像的尺寸,这些额外填充的像素值通常设置为零,卷积操作在这个填充后的输入图像上…

C#基础-结构体应用实例

目录 定义 结构有以下特点 用法实例 定义 在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。 结构有以下特点 结构可带有方法、字段、索引、属性

2024年生成式人工智能发展预测

2024年生成式人工智能发展预测 2023.12.9版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 当前&#xff0c;生成式人工智能&#xff08;Generative AI&#xff0c;后面简称 Gen AI&#xff09;领域不但在持续演进&#xff0c;而且它正在彻…

ThinkPHP生活用品商城系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP生活用品商城系统 一 介绍 此生活用品商城系统基于ThinkPHP框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统分为用户和管理员。(附带配套设计文档) 技术栈&#xff1a;ThinkPHPmysqlbootstrapphpstudyvscode 二 …

MYSQL主从复制配置指引

MYSQL主从复制配置指引 1.前期准备 部署完主备数据库&#xff0c;初始化主备库表结构和数据。 2. 主库配置修改 修改主库配置文件etc/my.cnf&#xff0c;新增以下配置&#xff1a; #服务器 id&#xff0c;需唯一 server-id 1 #二进制文件存放路径 log-bin mysql-bin …

深入理解JavaScript的箭头函数

深入理解JavaScript的箭头函数 在ES6中&#xff0c;JavaScript引入了箭头函数的概念&#xff0c;它提供了一种更简洁的语法来定义匿名函数。虽然箭头函数看起来很简单&#xff0c;但它们在实际应用中有一些独特的特性和行为。让我们深入理解箭头函数并学习如何正确地使用它们。…

记账中心二开

系统预设了 这几种 FSubSystem 为子系统 T_VC_SubSystem 卡片显示的表 字段 FNeedRalteAccount 设置为1的话 &#xff0c;需要与总账连用系统将去查找 系统状态控制表。 如果系统状态 没有配置这个子系统 将无法显示数据 select sysStaCtr.fid from T_BD_SystemStatusCt…

MySQL:drop、delete与truncate区别

一、用法不同 1、drop(丢弃数据): drop table 表名 &#xff0c;直接将表都删除掉&#xff0c;在删除表的时候使用。 2、truncate (清空数据) : truncate table 表名 &#xff0c;只删除表中的数据&#xff0c;再插入数据的时候自增长 id 又从 1 开始&#xff0c;在清空表中数…