错误消息:尝试运行命令而不建立连接使用单元测试

时间:2017-06-01 16:04:16

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

我遇到的问题是,当单独运行时,我的所有测试都能正常运行。但是,当我尝试在文件中运行所有测试时,我收到错误消息:尝试运行命令而不建立连接。 我知道测试工作是因为它们单独运行,但我需要能够运行所有测试而不必逐个运行它们。我的代码目前看起来像这样:

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")

1 个答案:

答案 0 :(得分:0)

我也有同样的问题,我知道你在尝试与港口交谈之前还没有开始过木偶会议。 @After(注释),如果您正在使用此注释并且驱动程序已关闭且Marionette / Gecko无法再次启动。解决方案:删除  每个测试用例选项后driver .close();。 1)对于个别测试案例,驱动器启动和关闭 2)要运行其他测试用例,驱动程序应该重新开始运行,但gecko无法初始化第二个测试用例,因此在每个测试用例结束后删除driver.close。在你的情况下:

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

不能结束每个测试用例,可以在最后一个测试用例结束时使用