这是我的第一个真正意思上的自动化脚本。
1、练习的测试用例为:
打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接 2、在写脚本之前,需要明确测试的步骤,具体到每个步骤需要做什么,既拆分测试场景,考虑好之后,再去写脚本。
此测试场景拆分如下:
1)启动Chrome浏览器
2)打开百度首页,https://www.baidu.com
3)定位搜索输入框,输入框元素XPath表达式://*[@id=”kw”]
4)定位搜索提交按钮(百度一下)://*[@id=”su”]
5)在搜索框输入“胡歌”,点击百度一下按钮
6)在搜索结果列表判断是否存在“胡歌的新浪微博”这个链接
7)退出浏览器,结束测试
【注】chrome获取XPath路径步骤如下:
1)在你打开的网页(如:百度首页),按F12,弹出如下窗口
2)点击左上角箭头按钮(或Ctrl + Shift + C),此时可以在页面上移动光标,查看对应的代码,如移动到百度搜索框,显示如下:
点击一下,对应代码就会选中
然后,右击copy–>copy path 复制到XPath路径。
3、代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import time from selenium import webdriver ''' 测试用例:打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接 场景拆分: 1)启动Chrome浏览器 2) 打开百度首页,https://www.baidu.com 3)定位搜索输入框,输入框元素XPath表达式://*[@id="kw"] 4)定位搜索提交按钮(百度一下)://*[@id="su"] 5)在搜索框输入“胡歌”,点击百度一下按钮 6)在搜索结果列表判断是否存在“胡歌的新浪微博”这个链接 7)退出浏览器,结束测试 ''' driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait( 8 ) # 设置隐式等待时间 driver.get( "https://www.baidu.com" ) # 地址栏里输入网址 driver.find_element_by_xpath( '//*[@id="kw"]' ).send_keys( "胡歌" ) # 搜索框输入胡歌 driver.find_element_by_xpath( '//*[@id="su"]' ).click() # 点击百度一下按钮 time.sleep( 2 ) # 等待2秒 # 通过元素XPath来确定该元素是否显示在结果列表,从而判断“壁纸”这个链接是否显示在结果列表 # find_element_by_link_text当找不到此链接时报错,程序停止 driver.find_element_by_link_text( '胡歌的新浪微博' ).is_displayed() driver.quit() |
补充知识:python + selenium自动化测试--页面操作
1、刷新当前页面
.refresh()
# 刷新当前页面
driver.refresh()
2、获取本页面的URL
.current_url
用处:
一般URL可以帮助我们判断跳转的页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分。
print(driver.current_url)
3、页面标题
获取当前页面标题
.title
1 2 | # 获取当前页面标题显示的字段 print (driver.title) |
断言页面标题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 1) 包含判断 # assert:断言,声称 try : assert "百度一下" in driver.title print ( "断言测试成功." ) except Exception as e: print ( "断言失败." , format (e)) # 2) 完全相等判断 if "百度一下,你就知道" = = driver.title: print ( "成功." ) else : print ( "失败." ) print (driver.title) |
4、新建标签页
用js实现如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | try : # 新标签页,此处用js实现,在有些博客上显示使用 # driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL, 't') # 我这测试无效,原因不知,于是采用如下方法 js = "window.open('http://www.acfun.cn/')" driver.execute_script(js) # 切换到新的窗口 handles = driver.window_handles # 获取窗口句柄 driver.switch_to.window(handles[ - 1 ]) # 切换到最后一个既最新打开的窗口 # 先切换窗口再打开新网址,才是在新窗口打开网址,不然还是在原来的百度页面打开此网址 driver.get( 'http://map.baidu.com/' ) except Exception as e: print ( "发现异常," , format (e)) |
5、页面前进、后退
前进: .forward()
后退: .back()
1 2 3 4 5 6 7 8 9 | driver.get( "https://www.baidu.com" ) time.sleep( 2 ) '''前进,后退''' elem_news = driver.find_element_by_link_text( "新闻" ).click() # 点击进入新闻 time.sleep( 2 ) driver.back() # 后退到百度首页 time.sleep( 2 ) driver.forward() # 从百度前进到新闻页 time.sleep( 2 ) |
6、获取浏览器版本号
.capabilities[‘version']
1 2 3 4 5 6 7 8 9 10 11 12 | # 获取浏览器版本号 """ Creates a new session with the desired capabilities. :Args: - browser_name - The name of the browser to request. - version - Which browser version to request. - platform - Which platform to request the browser on. - javascript_enabled - Whether the new session should support JavaScript. - browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested. """ print (driver.capabilities[ 'version' ]) |
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。