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

2019-12-10 16:26:50 浏览数 (1)

1. 简介

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

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

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

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

相关脚本代码如下:

2.1 代码实现:
2.2 参考代码:
代码语言:javascript复制
# 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 参考代码:
代码语言:javascript复制
# 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 参考代码:
代码语言:javascript复制
# 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 参考代码:
代码语言:javascript复制
# 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 报错关键字段如下:
代码语言:javascript复制
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 
6.1.2 解决办法:

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

6.2 geckodriver和selenium版本不兼容报错

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

6.2.1 报错关键字段如下:
代码语言:javascript复制
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
6.2.2. 解决办法:

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

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

6.3 依旧报错

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

6.3.1 报错关键字段
代码语言:javascript复制
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 解决办法:

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

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

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

代码语言:javascript复制
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('D:\software\Firefox\firefox.exe')

driver = webdriver.Firefox(firefox_binary = binary)

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

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得点波 推荐 不要忘记哦!!!

0 人点赞