所以这是我的设置:
使用带有uwsgi的flask服务器,并通过控制器操作,调用使用splinter(使用selenium)的python脚本来自动化gui。网络服务器没有显示器,所以我使用的是xvfb。
进入机器并运行xvfb并导出display=:99
,然后运行python脚本效果很好。但是通过控制器操作运行它不起作用 - 我收到以下错误:
WebDriverException:消息:在我们连接之前,浏览器似乎已退出。
(这与xvfb未运行时返回的错误相同)
ps aux
表明xvfb作为与Web服务器相同的用户运行(我已经隔离了所有内容,并且执行了单独的控制器操作:
p = subprocess.Popen("Xvfb :99 &", stdout=fstdout,stderr=fstderr, shell=True))
和DISPLAY
在root用户和Web服务器用户上都设置为:99
。
我可以安装vncserver并试试,但我怀疑我最终会遇到同样的问题。我也试图避免直接调用xvfb并使用PyVirtualDisplay,但同样的问题。
编辑:此行上的错误(如果使用splinter):
browser = Browser()
或者,如果是硒:
with pyvirtualdisplay.Display(visible=True):
binary = FirefoxBinary()
driver = webdriver.Firefox(None, binary)
(它最后一行出错)
有什么想法吗?