【问题标题】:Error Message: Tried to run command without establishing a connection When running multiple tests with unit test错误消息:尝试在未建立连接的情况下运行命令在使用单元测试运行多个测试时
【发布时间】:2017-11-02 21:16:12
【问题描述】:

我遇到了一个问题,即我的所有测试在单独运行时都能正常运行。但是,当我尝试运行文件中的所有测试时,我收到错误消息:尝试在未建立连接的情况下运行命令。 我知道这些测试是有效的,因为它们是单独运行的,但我需要能够运行所有测试而不是一个一个地运行它们。我的代码目前如下所示:

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

gecko = os.path.normpath(os.path.join(os.path.dirname(__file__), 'geckodriver'))
binary = FirefoxBinary('C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary, executable_path=gecko+'.exe')

class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = driver

    def test_business_excellence_opens(self):
        driver.get("http://url.network.com")
        self.assertIn("Page Title", driver.title)

    def test_home_links(self):
        driver.find_element_by_id('webapps').click()
        self.assertTrue('SPT facilitates the cultural change' in self.driver.page_source)
        time.sleep(1)
        driver.find_element_by_id('complexity').click()
        self.assertTrue('Thank you again' in self.driver.page_source)
        time.sleep(1)

    def test_contact_page(self):
        driver.get("http://url.network.com/Home/Contact")
        time.sleep(2)
        driver.find_element_by_id('name').send_keys('name')
        driver.find_element_by_id('ID').send_keys('123456')
        driver.find_element_by_id('email').send_keys('email@email.com')
        driver.find_element_by_id('message').send_keys('Unit testing form')
        driver.find_elements_by_css_selector("button[type='submit']")[0].click()

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()

为了自己运行它们,我在函数顶部添加了 driver=self.driver 和 driver.get("url.network.com")

【问题讨论】:

    标签: python unit-testing selenium-webdriver python-unittest


    【解决方案1】:

    我也遇到了同样的问题,我了解到您在尝试与端口通话之前还没有开始 Marionette 会话。 @After(annotation),如果你正在使用这个注解并且驱动程序被关闭并且 Marionette/Gecko 无法再次启动。解决方案:删除 driver .close(); 在每个测试用例选项之后。 1)对于单个测试用例,驱动程序启动和关闭 2)要运行其他测试用例,驱动程序应重新开始运行,但壁虎未能为第二个测试用例初始化,因此在每个测试用例结束后删除 driver.close。在你的情况下:

    def tearDown(self):
            self.driver.close() 
    

    不能是每个测试用例的结尾,可以在最后一个测试用例的结尾使用

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 2023-01-09
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多