《手把手教你》系列练习篇之10-python+ selenium自动化测试(详细教程)

1.  简介

  今天我们继续前边的练习,学习和练习一下:如何使用webdriver方法获取当前测试页面的URL、如何获取当前页面的title、如何打开浏览器的一个新建页面、如何操作单选按钮等等,这些小练习,来巩固基础。

2. webdriver方法获取当前测试页面的URL

  本小节介绍如何通过webdriver方法获取当前测试页面的URL。获取当前URL有什么用处呢,一般URL可以帮助我们判断跳转的页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分。因为这里作为练习宏哥在这里提一下,为的是就

是小伙伴或者童鞋们有个印象,在用到的时候知道怎么用即可。

相关脚本代码如下:

2.1 代码实现:

2.2 参考代码:
# coding=utf-8🔥# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:260612819
@公众号:北京宏哥(微信搜索,关注宏哥提示解锁更多测试干货)
Project: python+ selenium自动化测试练习篇10
'''# 3.导入模块
import time
from selenium import webdriverdriver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)driver.get("http://www.baidu.com/")
time.sleep(1)
driver.find_element_by_link_text("新闻").click()
time.sleep(1)
print (driver.current_url) # current_url 方法可以得到当前页面的URL
driver.quit()
2.3 运行结果:

运行代码后,控制台打印如下图的结果

3. 获取当前页面的title

  本小节介绍了如何获取当前页面的URL的值,本文介绍如何获取当前页面的title,这个也可以作为测试结果的依据,通过得到的title和预期的值对比,可以支持我们判断页面跳转正确。

相关脚本代码如下:

3.1 代码实现:

3.2 参考代码:
# coding=utf-8🔥# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:260612819
@公众号:北京宏哥(微信搜索,关注宏哥提示解锁更多测试干货)
Project: python+ selenium自动化测试练习篇10
'''# 3.导入模块
import time
from selenium import webdriverdriver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)driver.get("http://www.baidu.com/")
time.sleep(1)
driver.find_element_by_link_text("新闻").click()
time.sleep(1)
print (driver.title) # title方法可以获取当前页面的标题显示的字段
driver.quit()
3.3 运行结果:

运行代码后,控制台打印如下图的结果

4. selenium方法打开一个新的tab

  本小节介绍如selenium方法打开一个新的tab,我们知道在浏览器里,我们按住 ctrl+ t 就可以新打开一个tab。所以我们学习如何利用webdriver中send_key 的方法去触发ctrl+t的效果。我们利用火狐浏览器来演示。

相关代码如下:

主要是调用了keys模块下相关方法,可以通过这个方法,输入任何一个键盘上支持的字符或者快捷键。

4.1 代码实现:

4.2 参考代码:
# coding=utf-8🔥# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:260612819
@公众号:北京宏哥(微信搜索,关注宏哥提示解锁更多测试干货)
Project: python+ selenium自动化测试练习篇10
'''# 3.导入模块
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keysdriver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(6)driver.get("http://www.baidu.com/")
time.sleep(1)
ele = driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') # 触发ctrl + t
time.sleep(1)
4.3 运行结果:

运行代码后,控制台打印如下图的结果

4.4 查看浏览器

为了看得清楚,我们把退出浏览器的代码去掉,可以清楚的看到打开了一个新的窗口,如下图:

5. selenium中的方法去操作单选按钮

  本小节介绍如何利用selenium中的方法去操作单选按钮(Radio Button)。

利用百度搜索设置页面两个单选按钮举例

默认是选择新闻全文,我试试在两者之前来回点击。

实际上,勾选一个单选按钮,也就是调用元素方法click()

我们利用for语句遍历这两个单选按钮,依次点击他们。

相关脚本代码如下:

5.1 代码实现:

5.2 参考代码:
# coding=utf-8🔥# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-29
@author: 北京-宏哥   QQ交流群:260612819
@公众号:北京宏哥(微信搜索,关注宏哥提示解锁更多测试干货)
Project: python+ selenium自动化测试练习篇10
'''# 3.导入模块
from selenium import webdriverdriver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(8)for i in driver.find_elements_by_xpath(".//*[@id='se-settting-1']/input[@type='radio']"):i.click()
5.3 运行结果:

运行代码后,控制台打印如下图的结果

注意:

1. 这里我们第一次用到了find_elements,也就是找一组元素,返回的是一个列表

2. 循环这个列表,点击所有的单选按钮,这里应该只有2个符合上面XPath定位方法的单选按钮

6. 小结

  小结这部分今天主要是总结宏哥在练习过程中遇到的各种奇葩错误和解决办法。

6.1 没有浏览器驱动报错
6.1.1 报错关键字段如下:
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

6.1.2 解决办法:

去下载一个driver插件geckodriver.exe, 下载地址:Releases · mozilla/geckodriver · GitHub,下载好这个exe文件后,把这个文件放到你的python安装目录下,例如宏哥放的位置如下图:

6.2 geckodriver和selenium版本不兼容报错

这个有的人认为是浏览器和浏览器驱动的版本不匹配也会报这个错误。

6.2.1 报错关键字段如下:
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

 6.2.2. 解决办法:

查看selenium的版本号,下载可以兼容selenium的浏览器驱动即可;

查看浏览器的版本号,下载可以匹配的浏览器驱动即可,一般浏览器的驱动都会标明对应的浏览器版本号或者浏览器版本号的范围。

6.3  依旧报错

上边两个报错修改以后仍然报错。

6.3.1 报错关键字段
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line

6.3.2 解决办法:

 原因是:未找到浏览器的位置,宏哥这里提供解决办法有两种,仅供参考!!!

方法一:配置火狐浏览器的环境变量,这个宏哥在这里就不做赘述了,还是用老办法即可,看过宏哥的文章,应该知道老办法是什么,记住是老办法,不是老地方啊!!!

方法二:代码实现指引浏览器的位置

from selenium.webdriver.firefox.firefox_binary import FirefoxBinarybinary = FirefoxBinary('D:\\software\\Firefox\\firefox.exe')driver = webdriver.Firefox(firefox_binary = binary)

好了,今天的练习就到这里,希望大家好好的练习和理解。 但是今天火狐浏览器这块可能遇到的坑比较多,可以很好地锻炼一下自己哦!!!

      每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

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

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

相关文章

​谁用谁知道,教师实用工具分享​

老师们面临着日益增长的教学和管理任务。为了有效提升工作效率,一些实用的工具成为了老师们不可或缺的助手。给大家分享几款教师必备的工具,帮助教师们在教学和管理工作中更加得心应手。 1. 知乎:知识的海洋 知乎是一个中文问答社区&#xf…

Docker-compose安装、使用,容器化部署springboot项目

一、docker-compose的安装 1、按官网的方式去安装 1)下载docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 若…

【微机原理及接口技术】中断系统

【微机原理及接口技术】中断系统 文章目录 【微机原理及接口技术】中断系统前言一、中断概述中断的基本概念中断处理过程 二、8086/8088中断系统中断类型中断响应过程中断向量表内部中断服务程序 总结 前言 本篇文章我们会讲到中断的概述,8086/8088中断系统。 一、…

bootstrap5-学习笔记3-文字格式+表格+徽章

参考: Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/getting-started/introduction/ 之前用bootstrap2和3比较多&#x…

微软云计算Windows Azure(三)

目录 五、Windows Azure Marketplace六、Windows Azure服务平台(一)网站(二)虚拟机(三)云服务(四)移动服务(五)大数据处理(六)媒体支持…

点赋科技:在招聘会上绽放光彩,助力青春梦想起航

在近日举行的青年企业家协会招聘会暨长江大学就业实习双选会上,点赋科技以其独特的魅力和强大的实力吸引了众多求职者的关注。 点赋科技的展位前人头攒动,公司的招聘团队热情地与每一位求职者交流。他们详细介绍了公司的发展历程、业务范围、企业文化以及…

LeetCode-704. 二分查找【数组 二分查找】

LeetCode-704. 二分查找【数组 二分查找】 题目描述:解题思路一:注意开区间和闭区间背诵版:解题思路三: 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target &#xf…

杨校老师项目之基于52单片机的霍尔自行车码表【嵌入式】

获取全套资料: 有偿获取:mryang511688 技术:C语言、单片机等 摘要: 本项目基于单片机设计了一款霍尔自行车码表。该系统实现了骑行过程中即时显示行驶速度、行径里程、显示当前时刻以及超速危险报警等功能。有助于骑行者在骑行过…

“解锁财富新密码:订单共享商业模式的革命性力量“

在当前的商业环境中,创新和效率是企业生存和发展的关键。今天,我们向您介绍一种革命性的商业模式——订单共享商业模式,它正在改变企业家们对新零售的理解和实践。 订单共享商业模式,是一种通过整合和优化不同商家的订单资源&…

从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件

文章目录 从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件准备工作:Node.js和npm国内镜像加速下载初始化你的Electron项目创建你的Electron应用运行你的Electron应用为你的应用设置图标打包成EXE文件结语 从零开始:如何用Electron将…

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 🌊1. 研究目的 🌊2. 研究准备 🌊3. 研究内容 🌍3.1 多层感知机模型选择、欠拟合和过拟合 🌍3.2 练习 🌊4. 研究体会 🌊1. 研究目的 理解块的网络结构;比较块的网络与传统…

Qt如何让按钮的菜单出现在按钮的右侧

直接上代码,我们用到了一个eventfilter的函数功能。这个函数比较厉害和重要,大家务必经常拿出来看看。 void MainWindow::initMenu() { QMenu* menuLiXiang new QMenu; QAction* actXiangMuZhangCheng new QAction("项目章程"); …

【Cesium4UE】使用问题及解法统计

本期作者:尼克 易知微3D引擎技术负责人 1.加载3dtiles模型很慢 1.3dtiles是否做了重建顶层处理。如果3dtiles的tiles块太多使用CesiumLab重建顶层。 2.将3dtiles模型放置到固态硬盘中 3.如果有多块3dtiles,考虑使用CesiumLab合并3dtiles处理 4.如果不需…

OSG天空图代码

osgEarth // 创建天空选项osgEarth::Util::SkyOptions skyOptions;// 设置天空的坐标系统(可选)skyOptions.coordinateSystem() osgEarth::Util::SkyOptions::COORDSYS_ECEF;// 设置一天中的小时数(可选)skyOptions.hours() 12.…

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生,其可以帮助…

Al2O3/SiC纳米复相陶瓷力学性能显著提升 我国研究机构数量较多

Al2O3/SiC纳米复相陶瓷力学性能显著提升 我国研究机构数量较多 Al2O3/SiC纳米复相陶瓷,是以氧化铝(Al2O3)为基体相,以纳米碳化硅(SiC)为第二相,将第二相纳米颗粒弥散进入基体相,经高…

Google Inventor一款适合儿童的趣味APP编程开发平台

Google Inventor 其实是指 App Inventor,这是由 Google 开发并由麻省理工学院(MIT)继续维护和发展的一个应用程序开发平台。 App Inventor 的主要特点和用途如下: 什么是 App Inventor? App Inventor 是一个基于 W…

uni-app基础框架搭建(vue3+ts+vite)

1.基础准备 uni-app官网uni-app,uniCloud,serverless,环境安装,创建uni-app,自定义模板,国内特殊情况,更新依赖到指定版本,运行、发布uni-app,运行并发布快应用,运行并发布快应用(webview),运行并发布快应用(webview)-华为,cli创建项目和HBuilderX可视化界面创https://uniapp.…

中科数安 | 透明加密防泄密系统!如何有效防止企业内部核心数据资料外泄?

中科数安提供的透明加密防泄密系统是一种专为企业设计的数据保护解决方案,它通过以下关键特性有效防止企业内部核心数据资料外泄: PC地址:——www.weaem.com 自动智能透明加密:系统能够在操作系统级别无缝集成,对指定类…

AC/DC电源模块:跟踪技术的创新之选

BOSHIDA AC/DC电源模块:跟踪技术的创新之选 AC/DC电源模块是一种将交流电转换为直流电的设备,广泛应用于各个领域的电子设备中。随着现代科技的发展,对电子设备的要求越来越高,需要能够提供更稳定、更高效的电源。AC/DC电源模块…