python3.5+selenium3.4自动化测试1_错误图片用时间命名保存
2017-05-19 11:26
357 查看
这边主要讲一个简单的登陆自动化验证,先上一下代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchAttributeException import unittest,time,re from time import strftime, localtime from datetime import datetime import HTMLTestRunner class LoginReset(unittest.TestCase): def setUp(self): self.driver=webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url="http://192.168.1.131" self.verificationErrors=[] self.accept_next_alert=True def test_loginreset(self): ''' 1.2.验证登陆界面的reset按钮 ''' driver=self.driver driver.get(self.base_url+"/") try: driver.implicitly_wait(10) #智能等待10 driver.find_element_by_id("username").send_keys("admin")#见图一by_id driver.find_element_by_id("secret").send_keys("password") driver.find_element_by_id("reset_button").click() time.sleep(10)#等待10 except: driver.get_screenshot_as_file(u"D:/python/selenium/error_png/1.login/1.2/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3]) def tearDown(self): time.sleep(3) self.driver.quit() self.assertEqual([],self.verificationErrors) if __name__=="__main__": suite=unittest.TestSuite() suite.addTest(LoginReset("test_loginreset")) unittest.TextTestRunner().run(suite)
1.这个代码主要先解释一下find_element_by_id,selenium中通过定位元素进行测试,通过寻找id是最直观的,但很多复杂的元素定位往往没办法用id定位,在一般的登陆窗口中倒是可以简单的定位到id
在这个截图中可以很简单的看到代码找到得id=“username”
2.selenium中的普通等待和智能等待 通过调入time函数,主要解决浏览器没反应过来可能造成的各种错误
import unittest,time,re time.sleep(10)#普通等待,休眠10秒中,10秒后继续运行 driver.implicitly_wait(10)#智能等待,在10秒的范围内等待,在浏览器反应过来10秒内就可以进入下一个环节,比如5秒钟
3.错误图片保存,在自动化运作过程中没有达到预期效果或定位不到元素抛出异常经常需要用截图的方法保持现场,这边图片按时间保存可以有效避免图片覆盖,也准确记录了错误发生的时间
import unittest,time,re from time import strftime, localtime from datetime import datetime driver.get_screenshot_as_file(u"D:/python/selenium/error_png/1.login/1.2/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])
主要用到selenium中的截图screenshot:
a.get_screenshot_as_file(self, filename)
–这个方法是获取当前window的截图,出现IOError时候返回False,截图成功返回True。filename参数是保存文件的路径。
Usage:
driver.get_screenshot_as_file(‘/Screenshots/foo.png’)
b.get_screenshot_as_base64(self)
–这个方法也是获取屏幕截图,保存的是base64的编码格式,在HTML界面输出截图的时候,会用到。比如,想把截图放到html测试报告里。
Usage:
driver.get_screenshot_as_base64()
c.get_screenshot_as_png(self)
–这个是获取屏幕截图,保存的是二进制数据,很少用到.Usage:
driver.get_screenshot_as_png()
图片路径保存主要按用例分类规范方便后期找到,图片命名保存到秒后面三位,一般不会重复了
相关文章推荐
- php上传图片之时间戳命名(保存路径)
- android保存图片到SD卡并以时间命名
- android保存图片到SD卡并以时间命名
- 上传图片、预览、按上传时间命名保存
- php上传图片之时间戳命名(保存路径)
- Python3.5 微信图片-日期命名
- 【错误】为什么在网上下载一个图片,命名为select*from ,结果你会发现保存不了,这是为什么?
- Excel VBA 将当前活动工作表中的图片保存到以工作表名称命名的文件夹内
- 简洁的python,简洁的urllib,保存图片
- fileupload 上传文件函数 --把图片名用日期时间命名
- python 网页爬虫+保存图片+多线程+网络代理
- GDI+ 中发生一般性错误 asp.net保存图片
- Hibernate3.5+Struts2如何操作blob将二进制图片保存在ORACLE中
- asp.net图片上传-简单实用(VS2008 FileUpload控件+ASP.NET2.0)按时间+三位随机数重命名
- Springmvc保存时间的时候报转换类型错误解决方法
- python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie
- Python保存一个网页的全部内容(包含链接内的图片等等)
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
- 通过web发布图片时,不论是什么格式的,在IE下保存时一律是“未命名.bmp”的原因和解决方法
- C#新保存文件时候用到按日期时间命名的代码