Selenium2 + Python3.6实战:生成HTML测试报告 Invalid argument

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium2 + Python3.6实战:生成HTML测试报告 Invalid argument相关的知识,希望对你有一定的参考价值。

今天在学习自动化测试的高级应用,第一篇就是生成HTML测试报告,由于测试报告的名称没有进行设置,所以每次运行测试之前若没有手动修改之前的报告名称,运行时就会把原来的报告覆盖。这样做显然很麻烦,最好的解决办法就是在报告名称中加入当前时间,这样生成的报告既不会重叠,又能更清晰地知道报告生成的时间。

但是却在运行代码的过程中,出现了报错:

Traceback (most recent call last):
  File "D:/Python/selenium/test_baidu.py", line 33, in <module>
    fp = open (filename, ‘wb‘)
OSError: [Errno 22] Invalid argument: ‘./2017-07-25 16:52:00result.html‘

乍看我还以为是发生了什么事情,仔细查看我的代码也没有觉得有问题。思索了很久,突然意识到,我把文件名的时间设置成now = time.strftime("%Y-%m-%d %H:%M:%S")

文件名是不允许出现类似于/ \ :等特殊字符的。瞬间我就清楚了,立马修正过来,再次允许,果然成功了。

 

from selenium import webdriver

import unittest

import time

from HTMLTestRunner import HTMLTestRunner

 

class Baidu (unittest.TestCase):

    ‘‘‘百度搜索测试‘‘‘

 

    def setUp (self):

        self.driver = webdriver.Firefox( )

        self.driver.implicitly_wait (10)

        self.base_url = "http://www.baidu.com/"

 

    def test_baidu_search(self):

        ‘‘‘搜索关键字:HTMLTestRunner‘‘‘

        driver = self.driver

        driver.get (self.base_url)

        driver.find_element_by_id ("kw").send_keys ("HTMLTestRunner")

        driver.find_element_by_id ("su").click( )

 

    def tearDown (self):

        self.driver.quit( )

 

if __name__ == "__main__":

    testunit = unittest.TestSuite( )

    testunit.addTest (Baidu("test_baidu_search"))

 

    #按照一定格式获取当前时间

    now = time.strftime("%Y-%m-%d %H_%M_%S")    #一定不要包括禁止使用的文件名特殊符号

   

    #定义报告存放路径

    filename = ‘./‘ + now + ‘result.html‘

    fp = open (filename, ‘wb‘)

    #定义测试报告

    runner = HTMLTestRunner (stream=fp,

                             title=‘百度搜索测试报告‘,

                             description=‘用例执行情况:‘)

    runner.run (testunit)   #运行测试用例

    fp.close( )   #关闭报告文件

 




以上是关于Selenium2 + Python3.6实战:生成HTML测试报告 Invalid argument的主要内容,如果未能解决你的问题,请参考以下文章

Selenium2+Python3.6实战:定位下拉菜单出错,如何解决?用select或xpath定位。

Selenium2+Python3.6实战:读取xml文件,获得标签信息ExpatError: not well-formed (invalid token)

python3.6 + selenium2.53.1 查询数据库并将返回的内容中每一行的内容转换成class对象

Selenium2项目实战

Selenium2+Python自动化测试实战

《selenium2 python 自动化测试实战》——定位iframe