首页 > 解决方案 > Selenium Web 驱动程序在尝试测试 Flask 应用程序时挂起

问题描述

我正在尝试为我的网络应用程序编写自动化测试,但遇到了一个奇怪的问题;

尝试调用driver.get('https://my-local-app-url:port')Chrome 时只是挂起并且从未真正打开 URL。但是,当driver.get()在 Google.com 上使用时,它工作得很好。

这就是我设置所有内容的方式:

考试”:

class TestApp:
def test_app(self, chrome_browser, app):
    chrome_browser.get('https://google.com') << this line execute just fine
    app.run(host='127.0.0.1', port=8000)
    chrome_browser.get('http://127.0.0.1:8000/') << this one does not execute

conftest.py:

@pytest.fixture(scope="session")
def chrome_browser():
    browser = webdriver.Chrome()
    return browser

@pytest.fixture(scope="session")
def app():
    app = create_app()
    return app

create_app 函数:

def create_app():
    app = Flask(__name__)
    app.register_blueprint(blueprint)
    return app

*在测试之外,函数 create_app 工作正常并返回一个 Flask 对象。*我的 Chrome 驱动程序和 chrome 版本是 86.04240.22。

标签: pythonseleniumflasktesting

解决方案


我想,该app.run()调用是阻塞的,并且该行之后的所有代码将仅在烧瓶服务器停止后执行。您可以在一个单独的线程中启动烧瓶,但有一些限制app.run(debug=True, use_reloader=False),但更合乎逻辑的方法是在单独的类中实现 selenium 集成测试并将它们作为单独的进程启动。


推荐阅读