python - 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。
解决方案
我想,该app.run()
调用是阻塞的,并且该行之后的所有代码将仅在烧瓶服务器停止后执行。您可以在一个单独的线程中启动烧瓶,但有一些限制app.run(debug=True, use_reloader=False)
,但更合乎逻辑的方法是在单独的类中实现 selenium 集成测试并将它们作为单独的进程启动。
推荐阅读
- python - 我如何在 Python 中重复这些 pyautogui.click() 函数?
- javascript - 如何通过使用 jQuery 单击按钮来获得下一个问题
- wso2 - 在 WSO2 APIM 3.1.0 中执行在 MySQL 数据库上创建表的数据库脚本失败
- azure - 我们需要更改 Azure 中的 UPN。我们需要在 Snowflake 中/使用 Snowflake 做什么才能继续登录吗?
- sql - 选择列在哪里连续包含三个大写字母
- java - java - 如何在java中需要表达式的地方分配变量?
- c# - 来自部分视图的表单上的多个提交按钮,只有列表中的第一个提交数据
- c# - localhost 证书的潜在风险错误
- python - Postgresql 脚本将点插入到接受 NULL 值的表中
- powershell - 延迟启动到 powershell 脚本