51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【长期招募】博为峰网校招聘兼职讲师!【大数据必修课】Docker入门与实战一站式软件测试平台
【你来问我来答第91期】:WEB下的性能测试!【专题】接口测试神器—Postman从入门到上手 《51测试天地》一大波大神作品来袭 自学软件测试那点事
查看: 2148|回复: 2

Selenium单元测试框架运行报错:SessionNotCreatedException

[复制链接]
  • TA的每日心情
    慵懒
    2018-3-23 08:21
  • 签到天数: 26 天

    连续签到: 2 天

    [LV.4]测试营长

    发表于 2018-2-2 09:25:07 | 显示全部楼层 |阅读模式
    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 NoSuchElementException
    import unittest, time, re

    class Baidu(unittest.TestCase):#集成unittest.TestCase类, TestCase 类继承是告诉 unittest 模块的方式,这是一个测试案例
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.base_url = "http://www.baidu.com/"
            self.verificationErrors = []#错误信息将打印到这个列表
            self.accept_next_alert = True#是否继续接受下一个警告。

        def test_baidu(self):#test开头的是测试脚本。
            driver = self.driver
            driver.get(self.base_url + "/")
            driver.find_element_by_id("kw").send_keys("selenium webdriver")
            driver.find_element_by_id("su").click()
            driver.close()

        '''
        #is_element_present 函数用来查找页面元素是否存在,try...except.... python 语言的异常捕捉。
        #is_element_present 函数在这里用处不大,通常删除,因为判断页面元素是否存在一般都加在 testcase 中。
            def is_element_present(self, how, what):
                try: self.driver.find_element(by=how, value=what)
                except NoSuchElementException, e:return False
                return True

        #弹窗的异常处理
            def is_alert_present(self):
                try: self.driver.switch_to_alert()
                except NoAlertPresentException, e: return False
                return True
        '''#我曹,注释缩进不对也会报错
    #关闭警告以及对得到的文本框处理,
        def close_alert_and_get_its_text(self):
            try:
                alert = self.driver.switch_to_alert()
                alert_text = alert.text
                if self.accept_next_alert:
                    alert.accept()
                else:
                    alert.dismiss()
                return alert_text
            finally: self.accept_next_alert = True

    #tearDown 方法在每个测试方法执行后调用,这个地方做所有测试用例执行完成的清理工作,如退出浏览器等。
        def tearDown(self):
            self.driver.quit()
            #对前面 verificationErrors 方法获得的列表进行比较;如查 verificationErrors 的列表不为空,输出列表中的报错信息
            self.assertEqual([], self.verificationErrors)#
    if __name__ == "__main_":
        unittest.main()#用来测试类中以test开头的用例


    下边是出错的信息:ErrorTraceback (most recent call last):  File "D:\software\Anaconda3\lib\unittest\case.py", line 59, in testPartExecutor    yield  File "D:\software\Anaconda3\lib\unittest\case.py", line 608, in run    self.tearDown()  File "C:\Users\zhuyonggang\PycharmProjects\python_learn\selenium_test\unittest框架.py", line 54, in tearDown    self.driver.close()  File "D:\software\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 679, in close    self.execute(Command.CLOSE)  File "D:\software\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute    self.error_handler.check_response(response)  File "D:\software\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response    raise exception_class(message, screen, stacktrace)selenium.common.exceptions.SessionNotCreatedException: Message: Tried to run command without establishing a connection




    最佳答案

    查看完整内容

    你在test_baidu方法中已经driver.close()了,在tearDown中再self.driver.quit(), 当然就报你看到的显示的错误了。建议两者选其一。
    回复

    使用道具 举报

    该用户从未签到

    发表于 2018-2-2 09:25:08 | 显示全部楼层
    你在test_baidu方法中已经driver.close()了,在tearDown中再self.driver.quit(),
    当然就报你看到的显示的错误了。建议两者选其一。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-23 08:21
  • 签到天数: 26 天

    连续签到: 2 天

    [LV.4]测试营长

     楼主| 发表于 2018-2-6 09:32:59 | 显示全部楼层
    always_fly 发表于 2018-2-2 17:12
    你在test_baidu方法中已经driver.close()了,在tearDown中再self.driver.quit(),
    当然就报你看到的显示的 ...

    哦了,谢谢了,
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2018-4-25 08:47 , Processed in 0.062133 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2018 Comsenz Inc.

    快速回复 返回顶部 返回列表