51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 14721|回复: 2
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    开心
    2018-9-6 09:41
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 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(), 当然就报你看到的显示的错误了。建议两者选其一。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

  • TA的每日心情
    开心
    2018-9-6 09:41
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]测试营长

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

    哦了,谢谢了,
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 08:54 , Processed in 0.066818 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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