selenium - Firefox 在 Selenide 后台运行
问题描述
通常,问题是相反的,如何让 Firefox 在后台运行。我前段时间在 Selenide 中编写了一些基本测试,但是当我今天尝试在服务器上(像往常一样)运行它时,我得到了一个错误
SessionNotCreatedException
我开始寻找结果,我注意到,当我现在从我的计算机本地运行测试时,Firefox 没有出现。我可以在任务管理器中看到 Firefox 的任务,完成的屏幕截图出错,但浏览器没有打开。
我注意到有很多关于如何使用无头选项运行测试的问题,但我需要一些相反的东西,这可能是一个问题SessionNotCreatedException
,服务器看不到浏览器。
据我所知,Selenide 运行最新的壁虎驱动程序(它正在更新)。我尝试在开始时设置一些选项:
FirefoxOptions options = new FirefoxOptions();
options.setCapability("marionette", false);
options.setCapability("headless", false);
并将 Selenide 更新到 5.0.0,但仍然失败
编辑:我不能使用任何其他浏览器
解决方案
对于在服务器上运行测试,服务器通常是一个 X 窗口系统,所以实现它的方法是运行一个虚拟显示器。
from xvfbwrapper import Xvfb
with Xvfb() as xvfb:
# launch virtual display here.
# start your webdrivr in the virtual display
或者你可以PyVirtualDisplay
在这里使用链接。
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
笔记
确保您的服务器是 X Window 系统!
正如您在此处看到的,它在 Windows 上不起作用。
希望这对你有帮助!
推荐阅读
- java - Spring Controller 单元测试最佳实践
- npm - How to fix 'Cannot find module './access-error.js' error when i'm going to install npm
- java - 变量为空,但它真的不是吗?
- sql - 如何将多个字符串绑定到游标中的 1 个变量中?
- ios - 在 Flutter 中将目录中的所有图像显示到列表中
- java - 找不到 iText7 的方法 getInstance(),即使它识别类 PdfWriter
- python - 使用 Python 在 Microsoft Word 中编辑图表数据
- sql-server - 配置为“MultipleActiveResultSets = True”的 Localdb
- javascript - 如何检查表单中是否至少选中了一个复选框?
- wpf - 为什么 CefSharp 自定义上下文菜单命令大部分时间都不起作用?