当前位置: 首页 > 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;…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...