Python + Selenium —— 常用控制方法!

Selenium 体系中用来操作浏览器的 API 就是 WebDriver,WebDriver 针对多种语言都实现了一套 API,支持多种编程语言。

Selenium 通常用来做自动化测试,或者编写网络爬虫。

通常我们说的 Selenium 自动化操作,指的就是 WebDriver 中提供的控制方法。一般我们讲 Selenium 多半都是在谈 WebDriver。

Webdirver 中提供了对浏览器、网页元素、鼠标键盘等操作方法:

  • 浏览器操作: 打开和关闭浏览器、改变浏览器分辨率,切换窗口,模拟刷新等

  • 页面元素定位: WebDriver 中提供了 Id、Name、Link text、Css、Xpath 等定位方式,用于查找需要操作的网页元素

  • 页面元素操作: 找到元素都,就可以对元素进行操作。比如点击click、输入send_keys、清空文本clear、获取文本text、获取属性get_attribute

  • 其他方法: 页面等待、frame 切换、调用JS、模拟鼠标键盘等

启动浏览器

对于 WebDriver 的控制方法,先从对浏览器的基本控制说起。要操作网页元素,首先需要启动浏览器,下面的代码就实现启动浏览器,并打开百度首页:

# 引入webdriver	
from selenium import webdriver	
# 启动 chrome 浏览器
driver = webdriver.Chrome(executable_path='driver/chromedriver.exe')	
# 打开百度首页	
driver.get("https://www.baidu.com")	

executable_path:
Python + Selenium环境搭建 中提到了浏览器驱动的部署,一般我们都放在环境变量中,方便使用。
如果你不想放环境变量,可以通过此参数指定驱动 (如:chromedriver.exe) 的绝对路径或相对路径。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

浏览器控制

控制浏览器大小

通过 WebDriver 打开浏览器一般默认都是窗口状态(非全屏),这可能会导致某些网页显示不全,无法定位和操作某些页面元素。

可以通过 WebDriver 控制浏览器的大小:

driver.maximize_window()	# 浏览器最大化
driver.set_window_size(480, 800)	# 设置浏览器480,800为像素大小
driver.minimize_window()	# 浏览器最小化

一般,用 maximize_window() 方法最大化即可。

后退、前进

在使用浏览器的过程中,为了方便在浏览过的网页之间切换,WebDriver 也提供了对应的 back() 和 forword() 方法来模拟后退和前进按钮。

driver.back()			 # 后退到上一个页面
driver.forward()		 # 前进到下一个页面

如无特殊需要,不建议使用这两个方法。

浏览器刷新

有时候需要手动刷新(F5)页面,例如页面上有些统计字段,当数据发生改变时,并不会及时变化,需要刷新页面后才会变化。此时可以使用模拟浏览器刷新的方法 refresh()。

driver.refresh()         # 浏览器刷新,与F5同理

退出

WebDriver 提供了两种退出方式:close() 和 quit(),close() 方法只关闭当前窗口,quit() 则完全退出(删除 session,并关闭浏览器驱动)。

driver.close()			 # 关闭当前窗口,不会关闭浏览器驱动
driver.quit()			 # 退出所有窗口并关闭浏览器驱动

关于 close() 与 quit():
close() 仅关闭当前窗口,不会关闭浏览器驱动。
某些浏览器默认情况下,只有一个窗口时,关闭窗口的时候也会自动关闭浏览器。这会造成一个错觉,觉得 close() 也把浏览器关闭了。
对 WebDriver 来说,你并没有关闭浏览器,你只是关闭了一个窗口而已,所以浏览器驱动还处于开启状态,Python 的进程也并未停止。
quit() 会关闭浏览器,删除 session,清理运行过程。
所以,当你想退出时,使用 quit() 而不是 close()。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

AI:138-开发一种能够自动化生成艺术品描述的人工智能系统

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

备战蓝桥杯————如何判断回文链表

如何判断回文链表 题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2:…

【MySQL】SQL 入门和 DDL

1. 通用语法 SQL语句可以单行或多行书写,以分号结尾SQL语句可以使用空格/缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写,关键字建议使用大写注释: 单行注释:-- 注释内容 或 # 注释内容多行注释:/* 注释内容…

Linux线程(二)----- 线程控制

目录 前言 一、线程资源区 1.1 线程私有资源 1.2 线程共享资源 1.3 原生线程库 二、线程控制接口 2.1 线程创建 2.1.1 创建一批线程 2.2 线程等待 2.3 终止线程 2.4 线程实战 2.5 其他接口 2.5.1 关闭线程 2.5.2 获取线程ID 2.5.3 线程分离 三、深入理解线程 …

挑战杯 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 🔥 优质竞赛项目系列&#xf…

2024 值得推荐的免费开源 WAF

WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击。 开源 WAF 和商用 WAF(奇安信…

idea生成WebServices接口

文章目录 idea生成WebServices接口1.创建接口2.生成wsdl文件3.在soapUI中,生成6个文件4.将生成的文件拷贝到工程中5.在service-config中注册服务 idea生成WebServices接口 1.创建接口 新建一个webServices工程,按照接口规范生成接口、请求类、响应类。…

LVS负载均衡服务器

简介: LVS (Linux Virtual Server):四层路由设备,是由中国人章文松研发的(阿里巴巴的副总裁)根据用户请求的IP与端口号实现将用户的请求分发至不同的主机。 工作原理: LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务&#xff…

认识AJAX

一、什么是Ajax? 有跳转就是同步,无跳转就是异步 Asynchronous Javascript And XML(异步JavaScript和XML) Ajax 异步 JavaScript 和XML。Ajax是一种用于创建快速动态网页的技术通过在后台与服务器进行少量数据交换,Ajax可以使网…

Swagger接口文档管理工具

Swagger 1、Swagger1.1 swagger介绍1.2 项目集成swagger流程1.3 项目集成swagger 2、knife4j2.1 knife4j介绍2.2 项目集成knife4j 1、Swagger 1.1 swagger介绍 官网:https://swagger.io/ Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和…

stm32——hal库学习笔记(ADC)

这里写目录标题 一、ADC简介(了解)1.1,什么是ADC?1.2,常见的ADC类型1.3,并联比较型工作示意图1.4,逐次逼近型工作示意图1.5,ADC的特性参数1.6,STM32各系列ADC的主要特性 …

51单片机晶振频率与定时中断产生pwn占空比

单片机中晶振频率为12MHZ的机器周期怎么算? 1、系统晶振频率是12M,则机器周期=12/12=1us; 2、定时1ms=1*1000=1000us; 3、工作在方式0下:最大计数值是2&a…

高防IP简介

高防IP可以防御的有包括但不限于以下类型: SYN Flood、UDP Flood、ICMP Flood、IGMP Flood、ACK Flood、Ping Sweep 等攻击。高防IP专注于解决云外业务遭受大流量DDoS攻击的防护服务。支持网站和非网站类业务的DDoS、CC防护,用户通过配置转发规则&#x…

Java之美[从菜鸟到高手演变]之GUI编程(一) 认识Java GUI编程

转眼间一年过去了,自从去年毕业以后博客就没怎么更新过了,一来是因为工作忙没有太多的时间去写,二来可能自己变得比较懒惰,所以就放下了。最近突然想继续整理下Java方面的东西,所以就接着写了。为什么选择Java GUI编程…

php docx,pptx,excel表格上传阿里云,腾讯云存储后截取第一页生成缩略图

php把word转图片的方法:首先给服务器安装libreoffice;然后使用exec函数来调用命令行操作;最后通过“exec(“soffice --headless --invisible…””方法把word转图片即可。 服务器环境:centos7 *集成环境:宝塔 我们开始给服务器安装libreoffice 直接执行下面的代码就可以…

FL Studio 21.2.3.3586 for Mac中文版新功能介绍及2024年最新更新日志

如果你正计划学习音乐制作,一款强大且易学的音乐制作软件是必不可少的。由于很多小伙伴对音乐制作软件没有实际体验过,到底选择哪一款软件最合适成为当下最纠结的问题。 这里为大家推荐一款功能强大且适合新手小伙伴的音乐编曲软件—FL Studio 21.2.3.35…

nginx 模块 高级配置

目录 一、高级配置 1.1. 网页的状态页 1.2.Nginx 第三方模块 ehco 模块 打印 1.3.变量 1.3.1 内置变量 1.3.2自定义变量 1.4.Nginx压缩功能 1.5.https 功能 1.6.自定义图标 一、高级配置 1.1. 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&…

The authenticity of host ‘github.com (20.205.243.166)‘ can‘t be established.

1、运行git clone报错: The authenticity of host github.com (20.205.243.166) cant be established. ECDSA key fingerprint is SHA256:p2QAC1TJYererOttrVc98/R1BWERWu3/LiyFdHfQM. Are you sure you want to continue connecting (yes/no/[fingerprint])? 这个…

【盲源分离】快速理解FastICA算法(附MATLAB绘图程序)

今天讲一个在信号分析领域较为常用的一个方法,即盲源分离算法中的FastICA。 我们先从一个经典的问题引入。 一、鸡尾酒舞会问题 想象一下,你身处一个熙熙攘攘的鸡尾酒舞会中。四周回荡着各种声音:笑声、交谈声、玻璃碰撞声,甚至…

物联网常见协议之MQTT 详解

一、简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上&#xff0c…