《手把手教你》系列练习篇之8-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-12-03
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇4
'''

# 3.导入模块
import time
from selenium import webdriver


driver = 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-12-03
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇4
'''

# 3.导入模块
import time
from selenium import webdriver


driver = 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-12-03
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇4
'''

# 3.导入模块
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


driver = 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-12-03
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇4
'''

# 3.导入模块
from selenium import webdriver

driver = 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 FirefoxBinary

binary = 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工具基础使用教程

相关推荐
懒大王爱吃狼20 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷1 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨1 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
深度学习lover2 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
XiaoLeisj3 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
API快乐传递者3 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
励志成为嵌入式工程师4 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉5 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端