硒蟒蛇错误Conne

时间:2021-01-09 00:21:03

标签: python selenium jenkins

我正在尝试在 Jenkins CI 中运行 python selenium 测试。 python 测试在本地运行良好,但在服务器上运行不正常。当我在服务器上运行时出现此错误

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
Test/UIFrontend/setupBrowser.py:35: in setupDriver
    driver.get("http://localhost:{0}/".format(port))
/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py:333: in get
    self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py:321: in execute
    self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f1beb4312e8>
response = {'status': 500, 'value': '{"value":{"error":"unknown error","message":"unknown error: net::ERR_CONNECTION_REFUSED\\n  (Session info: headless chrome=87.0.4280.66)","stacktrace":"#0 0x557fbae916a9 \\u003Cunknown>\\n"}}'}

    def check_response(self, response):
...
... 
...
...
        if exception_class == ErrorInResponseException:
            raise exception_class(response, message)
        elif exception_class == UnexpectedAlertPresentException:
            alert_text = None
            if 'data' in value:
                alert_text = value['data'].get('text')
            elif 'alert' in value:
                alert_text = value['alert'].get('text')
            raise exception_class(message, screen, stacktrace, alert_text)
>       raise exception_class(message, screen, stacktrace)
E       selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_CONNECTION_REFUSED
E         (Session info: headless chrome=87.0.4280.66)
"""Set up the webdriver to be used with other selenium tests.
"""
import os
import time

from selenium import webdriver


def setupDriver(options=None):
    """- Set up the webdriver to be used with other selenium tests.
    
    - Test fails if FRONT_PORT environment variable is not defined.

    - Loads Apollo and logs in

    Args:
        options (ChromeOptions, optional): Give custom ChromeOptions rather than using the one provided.

    Returns:
        webdriver: returns driver to be used with tests
    """
    if not options:
        options = webdriver.ChromeOptions()
        options.add_argument('--no-sandbox')
        options.add_argument('--headless') # have to be headless because of 

    if os.environ.get('FRONT_PORT'):
        port = str(os.environ.get('FRONT_PORT'))
    else:
        print("Environment variable FRONT_PORT not defined")
        assert False, "Environment variable FRONT_PORT not defined"

    driver = webdriver.Chrome('chromedriver', options=options)
    driver.set_window_size(1920, 1080)
    print("http://localhost:{0}/".format(port)) 
    driver.get("http://localhost:{0}/".format(port)) #errors out here
    time.sleep(1)
    driver.find_element_by_id("username-input").send_keys("username")
    driver.find_element_by_id("password-input").send_keys("password")
    driver.find_element_by_xpath(
        "/html/body/div/div/section/div/div/" +
        "div/div/form/div[4]/button").click()
    return driver

我不知道这是什么意思。如果您需要更多信息,请告诉我。此外,Jenkins CI 在外部服务器上运行,这意味着测试必须是无头的。

1 个答案:

答案 0 :(得分:1)

错误是:

selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_CONNECTION_REFUSED

意思是chrome无法连接到网站。这可能是因为服务器无法连接到互联网

您可以通过关闭网络并连接到某个网站来在 locat 中重新创建此异常

enter image description here

SO 验证 jenkins CI 是否可以访问您正在测试的网站