我使用Selenium RC自动执行某些浏览器操作,但我想在浏览器中是不可见的。 这可能吗? 怎么样? 什么硒电网? 我可以隐藏硒RC窗口也?
Answer 1:
有几个选项:
从而使浏览器中打开一个完全不同的机器(或虚拟机),然后就可以通过VNC或远程桌面连接连接到如果你想看到浏览器上你可以使用硒电网。 此外,另一种选择:如果您在远程服务器上运行一个詹金斯前台进程,它可以在桌面上执行测试项目。
您可以在XVFB在Linux上运行硒“无头”。 我从来没有尝试过这样做的,怀疑它真的值得去努力。 http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
您可以在Windows服务包硒RC。 http://support.microsoft.com/kb/137890 。 除了以更高版本的Windows权限的限制可能会阻止硒访问桌面如Windows 2000使用允许我们这样做。
另一种选择是使用类似的webdriver HTMLUnitDriver,不推出一个“真实”的浏览器。 http://code.google.com/p/webdriver/ 。 也有作为一个“无头Chrome的,你可以使用一个PhantomJS选项也是如此。
当然,也采用类似的服务SauceLabs,在那里你可以得到你的测试,以在云中运行的选项。 您的测试完成后,你可以看他们的视频运行。
Answer 2:
在Linux上,你可以在一个无头(虚拟)显示隐藏浏览器中运行的webdriver。 这可以用的Xvfb(X虚拟帧缓存)来完成。
您可以直接使用Python代码控制的Xvfb xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapper
运行无头应该是这样的Python代码:
from selenium import webdriver
from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')
print(driver.title)
driver.quit()
display.stop()
上安装的Debian / Ubuntu的依赖关系:
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
Answer 3:
我很容易设法隐藏浏览器窗口。
只需安装PhantomJS 。 然后,改变这一行:
driver = webdriver.Firefox()
至:
driver = webdriver.PhantomJS()
你的代码的其余部分将不需要改变,没有浏览器将打开。 出于调试目的,使用driver.save_screenshot('screen.png')
在你的代码的不同步骤。
Answer 4:
+1硒RC作为Windows服务。
对于有测试运行完全隐藏起来,我觉得你没有太多的解决办法,如果你使用的是Windows。
我今天准备这样做是为了献给您的局域网计算机在线所有的时间和有硒RC服务器上运行。 因此,您使用的计算机的IP,而不是本地主机的运行测试。 例如:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(考虑到这是运行服务器的计算机的IP)。
有了这样的设置,你在你的计算机运行测试,浏览器和RC服务器窗口是在另一台计算机和回到你做一次。
Answer 5:
在Linux上,你可以运行一个虚拟显示在您的测试浏览器。 您将需要xvfb
包用于创建虚拟X服务器。 在基于Debian的发行版,只需运行
sudo apt-get install xvfb
有一个很好的工具ephemeral-x.sh
将可以方便地设置任何命令虚拟显示上运行。 下载它 ,并使其可执行:
wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh
然后,你可以简单地使用它来启动Selenium服务器:
./ephemeral-x.sh java -jar selenium-standalone.jar
硒创建的所有浏览器窗口现在将使用虚拟显示器,将是无形的给你。
Answer 6:
如果您使用的是Windows,一个选择是运行在不同的用户帐户测试 。 这意味着浏览器和Java服务器不会对自己的帐户中。
Answer 7:
这是我跑我的测试与Linux桌面(Ubuntu的)的行家。 我厌倦了不能够与webdriver的总是把焦点Firefox的工作。
我安装XVFB
xvfb的运行-a MVN全新安装
而已
Answer 8:
在许多情况下PhantomJS不会完全满足您的需求,我想阐述在戴维·亨特的回答中提到的无头铬选项。
铬57刚刚推出这个功能。 您可以通过ChromeDriver传递--headless标志,以获得更多信息使用它看在讨论这个问题,
Answer 9:
有一个PhantomJS相关的项目叫GhostDriver ,这意味着运行使用的webdriver线JSON协议的硒网格PhantomJS实例。 这可能是你在找什么,当然,这个问题是4岁了。
Answer 10:
MacOSX上,我一直无法隐藏浏览器窗口,但至少我想出如何将其移动到不同的显示,因此不会破坏我的工作流这么多。 而Firefox的运行测试,只需控制单击其在被告席上,选择选项图标,并分配给显示2。
Answer 11:
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand
顺便说一句,这是任何开发人员都运行E2E逻辑上将产生的浏览器需要一个功能。 在开发环境很烦人处理这个不断弹出,你可以不小心互动使得测试失败的窗口和。
Answer 12:
使用无头浏览器将是你最好的选择,或者你可以直接上传到网站与它进行交互,这将节省大量的计算能力的其他东西/过程。 我用这个测试的是使用CPU的重元素,更多的权力,你保存搜索的鞋在多个网站上的网络自动化机器人时,你的程序越简单,就越容易在与MUHC更高的速度和时间运行多个进程可靠性。