Python Ubuntu服务器中的Selelum Headless,轻微错误“;我们还没来得及连接,浏览器就已经退出了;
所以我在Ubuntu服务器VM上运行Selenium,但有一个小问题。当我启动虚拟机并运行Selenium测试脚本时,我收到以下错误:Selenium.common.exceptions.WebDriverException:Message:“浏览器似乎在我们可以连接之前已退出”。现在,如果在运行任何Selenium测试脚本之前在终端中执行这个export DISPLAY=:99。所有测试无头运行 我的问题是你们是否知道如何在启动时执行这个命令。因此,在运行Selenium测试脚本之前,我不必在终端中运行这个。我已尝试将其添加到/etc/rc.local文件中。但这似乎不起作用 我还尝试在Selenium测试脚本开始时执行它。通过添加这个(我正在使用python) 关于如何做到这一点,有什么建议吗?Python Ubuntu服务器中的Selelum Headless,轻微错误“;我们还没来得及连接,浏览器就已经退出了;,python,ubuntu,selenium,headless,Python,Ubuntu,Selenium,Headless,所以我在Ubuntu服务器VM上运行Selenium,但有一个小问题。当我启动虚拟机并运行Selenium测试脚本时,我收到以下错误:Selenium.common.exceptions.WebDriverException:Message:“浏览器似乎在我们可以连接之前已退出”。现在,如果在运行任何Selenium测试脚本之前在终端中执行这个export DISPLAY=:99。所有测试无头运行 我的问题是你们是否知道如何在启动时执行这个命令。因此,在运行Selenium测试脚本之前,我不必在
提前感谢这行不通:
os.system("export DISPLAY=:99")
因为system()
启动一个新的shell,并且shell将在完成时关闭,这只会影响一个非常短暂的进程的环境。(子进程不能影响其父进程的环境。如果父进程在执行子进程之前进行更改,则只能影响其子进程的环境。)
您可以选择几个不同的机制来设置显示
:
- 在启动测试机制的脚本中设置它
如果系统可能执行其他任务,这尤其好,因为这将影响尽可能小。在Python中,这看起来像:
os.environ["DISPLAY"]=":99"
在export DISPLAY=:99
中,这看起来像:bash(1)
os.environ["DISPLAY"]=":99"
export DISPLAY=:99
- 在运行测试的用户帐户的登录脚本中设置它
如果运行测试的用户帐户永远不需要
变量,这就很好了。(但是如果用户通过DISPLAY
这将破坏通常的ssh-X登录testinguser@machine…
X会话转发。) 将其添加到用户的ssh(1)
或~/.bashrc
或~/.profile
。(有关文件之间的差异,请参见~/.bash\u profile
)bash(1)
- 为所有用户将其设置为登录。如果系统上的多个用户帐户将运行测试脚本,并且您只想让它对所有用户都起作用,那么这很好。您不关心用户是否有用于X转发的
编辑显示
以添加新变量。/etc/environment
pam模块将为在pam_env(8)
配置目录中配置为使用/etc/pam.d/
的任何服务下进行身份验证的所有用户帐户设置环境变量。(这听起来比实际情况更复杂——有些服务希望经过身份验证的用户设置环境变量,而有些服务不这样做。)pam_env(8)
- 这是行不通的:
os.system("export DISPLAY=:99")
因为system()
启动一个新的shell,并且shell将在完成时关闭,这只会影响一个非常短暂的进程的环境。(子进程不能影响其父进程的环境。如果父进程在执行子进程之前进行更改,则只能影响其子进程的环境。)
您可以选择几个不同的机制来设置显示
:
- 在启动测试机制的脚本中设置它
如果系统可能执行其他任务,这尤其好,因为这将影响尽可能小。在Python中,这看起来像:
os.environ["DISPLAY"]=":99"
在export DISPLAY=:99
中,这看起来像:bash(1)
os.environ["DISPLAY"]=":99"
export DISPLAY=:99
- 在运行测试的用户帐户的登录脚本中设置它
如果运行测试的用户帐户永远不需要
变量,这就很好了。(但是如果用户通过DISPLAY
这将破坏通常的ssh-X登录testinguser@machine…
X会话转发。) 将其添加到用户的ssh(1)
或~/.bashrc
或~/.profile
。(有关文件之间的差异,请参见~/.bash\u profile
)bash(1)
- 为所有用户将其设置为登录。如果系统上的多个用户帐户将运行测试脚本,并且您只想让它对所有用户都起作用,那么这很好。您不关心用户是否有用于X转发的
编辑显示
以添加新变量。/etc/environment
pam模块将为在pam_env(8)
配置目录中配置为使用/etc/pam.d/
的任何服务下进行身份验证的所有用户帐户设置环境变量。(这听起来比实际情况更复杂——有些服务希望经过身份验证的用户设置环境变量,而有些服务不这样做。)pam_env(8)