当前位置: 首页 > news >正文

Python+Selenium+Unittest 之selenium11--WebDriver操作方法1-常用操作

目录

1、send_keys("输入的内容")  (输入文字)

2、clear() (清除元素内的内容)

3、click()(点击元素)

4、quit()关闭浏览器

5、refresh()(刷新浏览器页面)

6、set_window_size()和用 maximize_window()(设置浏览器窗口的大小)

7、forward()和back()(浏览器的前进和后退操作)

8、switch_to.window() (切换浏览器的窗口)


       本篇主要说下在selenium中WebDriver的常用方法,在定位到元素后,通常是需要对元素进行一些操作的,比如对按钮进行点击、在输入框中输入文字、清除输入框中的文字、对按钮进行单击、双击或者右键等一系列操作,这里就来简单说明下,我们在平时使用中常用到的几种操作。(本篇使用例子里的driver默认有前置操作 导入webdriver模块并且设置变量driver = webdriver.Chrome())

1、send_keys("输入的内容")  (输入文字)

        在前面的例子中经常能看到send_keys()这个方法,这个方法的作用是输入()内的文字到定位的元素上,比如定位到百度的搜索时框后,就可以使用send_keys()的方法去输入想要搜索的内容。

 send_keys()使用语法:

定位到的输入框.send_ksys("要输入的内容")

2、clear() (清除元素内的内容)

        clrar()的使用方法,比如在输入框中,我们已经输入了一些文字,或者默认就会有值,这时候我们想清空内容,重新输入内容的话,就可以先使用clear()清除框里的内容,然后再去进行输入。

clear()的使用语法:

要清除内容的元素.clear()

        send_keys()和clear()这里正好可以一起看下实际使用的例子:具体操作是,先打开百度首页,然后定位到输入框后,使用send_keys()输入文字“放假安排”,之后用clear()清除输入的内容。

from selenium import webdriver  #导入selenium模块的webdriver
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_id("kw").send_keys("放假安排")     #定位到输入框后,使用send_keys输入内容 "放假安排"
driver.find_element_by_id("kw").clear()   #之后再定位到输入框,清除之前输入的“放假安排”4个字

3、click()(点击元素)

        click()为单击元素,通常是定位到需要单击的元素后,使用click()来进行操作。比如百度首页的搜索按钮、上面的新闻、贴吧等按钮,都是在定位到需要打开的时候,在定位到的元素后面再使用click()的方法,即可进行点击操作。

click()的使用语法:

定位到需要单击的元素.click()

例子中的click()就是点击的意思,首先等位到新闻的按钮,然后需要点击按钮才能打开新的页面,这时候就可以用clik()去进行点击操作了。

from selenium import webdriver #导入selenium模块的webdriver
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_partial_link_text("新闻").click()    #定位到第一个包含"新闻"的按钮,并且进行点击操作

4、quit()关闭浏览器

        每当我们操作完时,有时候需要关闭浏览器,这时候就可以用quit()的方法去执行关闭浏览器的操作

quit()的使用语法:

driver.quit()

直接可以运行看下实际效果:

from selenium import webdriver #导入selenium模块的webdriver
import time      #导入时间模块
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
time.sleep(2)        #等待两秒
driver.quit()        #关闭浏览器

5、refresh()(刷新浏览器页面)

        refresh()的意思是刷新浏览器,相当于页面上使用键盘的F5去进行刷新一样。

refresh()的使用语法:

driver.refresh()        #刷新浏览器页面

可以看下具体操作,进入到页面后,点击刷新。

from selenium import webdriver #导入selenium模块的webdriver
import time
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_class_name("s_ipt").send_keys("放假安排")   #定位到输入框,然后输入框输入 放假安排
driver.find_element_by_id("su").click()   #定位到百度一下按钮,然后进行点击
time.sleep(4)         #等待4秒
driver.refresh()      #刷新页面

6、set_window_size()和用 maximize_window()(设置浏览器窗口的大小)

        有时候我们需要控制浏览器的大小来进行UI的测试,这时候就可以使用set_window_size()和用 maximize_window(),set_window_size()可以再括号里填写宽和高,来手动对浏览器进行参数设置,而maximize_window()是默认将浏览器的页面设置为最大化。

set_window_size()和用 maximize_window()的使用语法:

driver.set_window_size(宽,高)         #设置浏览器页面的宽和高
driver.maximize_window()        #设置浏览器页面的大小为最大

这里看下浏览器大小的实际效果:

from selenium import webdriver #导入selenium模块的webdriver
import time        #导入时间模板
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.set_window_size(200,600)         #设置浏览器的大小为200*600
time.sleep(3)             #等待3s
driver.maximize_window()     #设置浏览器大小为最大

7、forward()和back()(浏览器的前进和后退操作)

        forward()和back()是用来控制浏览器页面的前进和后退的,比如有时候我们不小心点错进入到下个页面,或者有要求是进入到下个页面,然后再退回到之前的页面,这时候就可以用back()的方法使浏览器回退到刚刚打开的网页,而forward()则是控制浏览器前进的,进入到下个页面,实际效果就是浏览器左上角的这两个按钮。

forward()和back()的使用语法:

driver.forward()       #页面进行前进的操作,前提是有可前进的页面
driver.back()          #页面进行后退操作,其前是有可后退的页面

        可以执行下下面代码简单看下具体的页面跳转。

from selenium import webdriver #导入selenium模块的webdriver
import time      #导入time模块
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_class_name("s_ipt").send_keys("放假安排")   #定位到输入框,然后输入框输入 放假安排
driver.find_element_by_id("su").click()   #定位到百度一下按钮,然后进行点击
time.sleep(2)          #等待2秒
driver.find_element_by_link_text("资讯").click()     #找到资讯按钮,然后点击
time.sleep(2)        #等待2秒
driver.back()        #页面回退到上个页面
time.sleep(2)         #等待2秒
driver.forward()     #页面前进到下个页面

8、switch_to.window() (切换浏览器的窗口)

        有的时候我们在操作浏览器时,会打开多个页面,这时候我们需要切换页面的话就需要用到switch_to.window()的方法去选择我们想要操作的页面。

switch_to.window()的使用语法:

window_handles = driver.window_handles          #获取页面的handles
driver.switch_to.window(window_handles[0])    #切换到最初始的页面
driver.switch_to.window(window_handles[1])    #切换到第二个打开的页面
driver.switch_to.window(window_handles[-1])   #切换到最后一个打开的页面

        看个实际例子,这里是首先打开百度的首页,这里就是打开的第一个页面,之后定位到新闻并点击,这时会打开第二个页面,这时候就可以用下标[1]或者[-1],来进行打开操作。具体看下实例。

from selenium import webdriver #导入selenium模块的webdriver
import time      #导入时间模块
driver = webdriver.Chrome()     #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.find_element_by_partial_link_text("新闻").click()    #定位到新闻,然后进行点击,此时打开一个新的页面
window_handles = driver.window_handles          #获取页面的handles
time.sleep(2)                    #等待两秒
driver.switch_to.window(window_handles[0])      #切换到第一个页签
time.sleep(2)               #等待两秒
driver.switch_to.window(window_handles[1])      #切换到第二个页签上

        


       如果大家在使用过程中遇到了问题,可以在文章下留言,或者关注公众号:刘阿童木的进化记录,进行留言

                   下图为公众号二维码,内容会同步发出,大家可以关注一起学习!

相关文章:

Python+Selenium+Unittest 之selenium11--WebDriver操作方法1-常用操作

目录 1、send_keys("输入的内容") (输入文字) 2、clear() (清除元素内的内容) 3、click()(点击元素) 4、quit()关闭浏览器 5、refresh()(刷新浏览器页面) 6、set_window_size()和用 maxim…...

气液固三相线识别—Langmuir部分复现

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material...

Redis——常见数据结构与单线程模型

Redis中的数据结构 Redis中所有的数据都是基于key,value实现的,这里的数据结构指的是value有不同的类型。 当前版本Redis支持10种数据类型,下面介绍常用的五种数据类型 底层编码 Redis在实现上述数据结构时,会在源码有特定的…...

大数据-玩转数据-Flink-Transform

一、Transform 转换算子可以把一个或多个DataStream转成一个新的DataStream.程序可以把多个复杂的转换组合成复杂的数据流拓扑. 二、基本转换算子 2.1、map(映射) 将数据流中的数据进行转换, 形成新的数据流,消费一个元素并产出一个元素…...

Java泛型集合简明教程

前言 我们编写一个数组并对数组进行排序,不管是对浮点型数组、整型数组、字符串数组或者是其他任何类型的数组进行排序,我们可以利用方法重载的方式,针对每种类型的数组分别编写一个排序方法,需要为几种类型的数组排序&#xff0…...

Prometheus-RabbitMQ Exporter

文章目录 一、介绍监控插件两个插件的区别一、 官方插件 rabbitmq_prometheus1 配置 RabbitMQ 集群名称2 授权使用插件2.1 配置文件方式2.2 命令行方式3 监听地址和端口4 RabbitMQ 插件获取指标的频率5 配置到 Prometheus6 关于聚合指标和每个对象指标6.1 获取聚合指标 `/metri…...

flink读取kafka数据存储iceberg

1、说明 使用flink实时的读取kafka的数据,并且实时的存储到iceberg中。好处是可以一边存数据,一边查询数据。当然使用clickhouse也可以实现数据的既存既取。而hive数据既存既读则会有问题。iceberg中数据读写数据都是从快照中开始的,读和写对…...

文章二:分支管理策略 - 分支玩转:Git分支管理实战

开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun 概述 在软件开发中,版本控制是一项至关重要的工作。Git作为目前最受欢迎的分布式版本控制系统&…...

JS dom元素和鼠标位置之间的一系列属性快速参考

clientHeight 获取对象的高度,不计算任何边距、边框、滚动条,但包括该对象的补白。 clientLeft 获取 offsetLeft 属性和客户区域的实际左边之间的距离。 clientTop 获取 offsetTop 属性和客户区域的实际顶端之间的距离。 clie…...

【剑指 Offer 39】数组中超过一半的数字

题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 思考: 方法一:投…...

list.stream.filter,List<List>转换为List

1.filter过滤 返回符合查询条件的集合//过滤所有deviceType为1的List<DeviceWorkTimeEntity> list entities.stream().filter(a -> "1".equals(a.getDeviceType())).toList(); 2.List<List>转换为List 可以使用流(Stream)的flatMap操作 public cl…...

手机里视频太大怎么压缩?压缩教程分享

现在视频文件的体积越来越大了&#xff0c;动不动就是几个GB起步&#xff0c;如果后期再剪辑处理一下&#xff0c;更是会占据更多的设备空间了&#xff0c;还会导致我们传输受到限制&#xff0c;这时候就需要我们对视频进行压缩处理&#xff0c;下面给大家分享几个简单的方法&a…...

Spring-Cloud-Loadblancer详细分析_3

前两篇文章介绍了加载过程&#xff0c;本文从Feign的入口开始分析执行过程&#xff0c;还是从FeignBlockingLoadBalancerClient.execute来入手 public class FeignBlockingLoadBalancerClient implements Client {private static final Log LOG LogFactory.getLog(FeignBlock…...

使用 VScode 开发 ROS 的Python程序(简例)

一、任务介绍 本篇作为ROS学习的第二篇&#xff0c;是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序&#xff0c;输出“Hello&#xff01;”的内容介绍。 首先我们来了解下ROS的文件系统&#xff0c;ROS文件系统级指的是在硬盘上ROS源代码的组织形式&#xff0c;其结构…...

2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;双精度浮点数的输入输出 输入一个双精度浮点数&#xff0c;保留8位小数&#xff0c;输出这个浮点数。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 只有一行&#xff0c;一个双精度浮点数。 输出 一行&#xff0c;保留8位小数的浮点数。 样例输…...

HarmonyOS/OpenHarmony应用开发-ArkTSAPI系统能力SystemCapability列表

SysCap&#xff0c;全称SystemCapability&#xff0c;即系统能力&#xff0c;指操作系统中每一个相对独立的特性。 开发者使用某个接口进行开发前&#xff0c;建议先阅读系统能力使用说明&#xff0c;了解Syscap的定义和使用指导。 说明 当前列表枚举出3.1 Beta版本中支持的…...

【01】基础知识:typescript安装及使用,开发工具vscode配置

一、typescript 了解 typeScript 是由微软开发的一款开源的编程语言。 typeScript 是 javascript 的超级&#xff0c;遵循最新的 es6、es5规范。 typeScript 扩展了 javaScript 的语法。 typeScript 更像后端 java、C# 这样的面向对象语言&#xff0c;可以让 js 开发大型企…...

用C++实现的RTS游戏的路径查找算法(A*、JPS、Wall-tracing)

在实时策略&#xff08;RTS&#xff09;游戏中&#xff0c;路径查找是一个关键的问题。游戏中的单位需要能够找到从一个地方到另一个地方的最佳路径。这个问题在计算机科学中被广泛研究&#xff0c;有许多已经存在的算法可以解决这个问题。在本文中&#xff0c;我们将探讨三种在…...

helm 制作应用的离线安装包

helm 制作应用的离线安装包 1、安装helm 到helm下载对应的压缩包&#xff1a;https://github.com/helm/helm/releases 解压&#xff0c;将helm文件cp到/usr/local/bin/ 文件夹下&#xff0c;查看helm版本&#xff1b;不同的k8s对应不同的helm版本&#xff0c;下载时留心注意…...

RN实现混合式开发-内嵌html

介绍 React Native WebView是一个用于在React Native应用中嵌入Web内容的组件。它允许你在应用中显示网页、加载HTML字符串、运行JavaScript代码等。 使用 首先&#xff0c;你需要在你的React Native项目中安装React Native WebView库。可以使用以下命令进行安装&#xff1a;…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...