您的位置:首页 > 编程语言 > Python开发

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()

图片路径保存主要按用例分类规范方便后期找到,图片命名保存到秒后面三位,一般不会重复了



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息