python3.5+selenium3.4自动化测试1_错误图片用时间命名保存

这边主要讲一个简单的登陆自动化验证,先上一下代码

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

图一by_id.png

在这个截图中可以很简单的看到代码找到得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()

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

图片命名.png

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌轻车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值