当前位置: 首页 > 面试题库 >

以非超级用户身份从ruby在Xvfb内运行Selenium :: WebDriver :: Firefox

林弘文
2023-03-14
问题内容

我正在尝试使用ruby脚本进行一些无头的测试。本质上,我正在执行display:1上的Xvfb,然后Watir::Browser.new(:firefox)使用watir-
webdriver启动。

如果您以root用户身份运行脚本,则效果很好-我可以运行x11vnc并观看脚本执行浏览器并与之交互。

问题是,我需要能够从Rails应用程序调用此ruby脚本,而不是以root身份运行…如果我尝试以常规用户身份从命令行运行脚本,则Xvfb会在:1上启动像往常一样,但是Watir不会启动浏览器…它最终会在60秒后超时。通过VNC连接时,鼠标光标将显示黑屏。

我可以从命令行完成全部工作-启动Xvfb,然后启动firefox --display=:1并启动浏览器,因此它一定是Selenium问题,对不对?

果壳:Selenium / Webdriver拒绝在Xvfb中启动浏览器,除非我以root身份运行脚本。


问题答案:
  • 已解决-编辑*-对不起,我无法回答问题,但显然我的帐户太新了,无法执行此操作。

解决了!在您问了这个问题之后,类似的事情会如何解决自己,真是令人惊讶。

对于那些想知道为什么的人,我需要做一些事情…

1)确保有问题的用户具有有效的主目录(默认情况下,www-data没有…其主目录由root拥有)

2)从命令行启动Xvfb,然后从命令行启动firefox(不是从脚本内部)-这将用普通的.dbus,.gconf等文件夹填充用户主文件夹

3)如果收到大量延迟,然后出现错误消息,例如“在加载或保存firefox-bin的配置信息时发生错误”,请删除用户主目录中的.dbus文件夹

4)再试一次#2-如果以前有配置错误,现在应该消失了。

5)尝试再次运行脚本。

这对我来说就像是一种魅力,因此,如果您在从Web应用程序中运行Xvfb和watir-webdriver时遇到类似的问题,请尝试一下。

感谢所有人为在网络上发布最佳问答网站所做的贡献…这个地方节省了我的屁股,比我想提的要多。

注意:用户最初在其问题中输入此修订内容,因为他们不知道如何将其发布为答案。后来,一个好心人将其删除,但从未添加为答案。



 类似资料:
  • 问题内容: 因此,我试图使用子进程从python脚本中以超级用户身份运行一个进程。在ipython shell中,类似 工作正常,但是一旦将其粘贴到脚本中,我就会开始获得:。 我猜这是由于sudo处理ubuntu上的环境的方式。(我也尝试和与无济于事) 所以我的问题基本上是,如果我想以超级用户身份运行,并在需要时提示用户输入超级用户密码,我该怎么做?我无意在脚本中存储密码。 编辑: 我尝试将命令既

  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的

  • 我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j

  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的

  • 本文向大家介绍以非root用户身份运行Docker容器,包括了以非root用户身份运行Docker容器的使用技巧和注意事项,需要的朋友参考一下 当您在Docker容器中运行应用程序时,默认情况下,它有权访问所有root特权。您可能已经注意到,当打开Ubuntu Docker Container Bash时,默认情况下您以root用户身份登录。在应用程序的安全性方面,这可能是一个主要问题。任何局外人

  • 我正在尝试创建一个任何用户都可以调用的函数,以便将数据从/复制到文件。。。我的想法是设置一个充当超级用户的函数,或者一个作为“postgres”执行的函数,但我不知道从何开始。 谁能给我指出正确的方向?