我目前从事自动化QA工作。我们的项目使用Java: jbehave,修昔底德,selenium。我们在Ubuntu操作系统上工作。
每次我运行我的测试,我不得不停止做一切(编码,浏览网页),因为每次点击或硒的任何动作是采取驱动程序窗口(我们正在使用chrome驱动程序)的焦点(使窗口活跃),如果我做一些事情,我搞砸了测试。我们的团队因此浪费了很多时间。
我们已经尝试了Phantomjs,它不能正常工作,无法找到元素等…并且在虚拟机中使用vagrant运行测试也不适合我们(由于公司特定的原因)。
如果Chrome驱动程序在启动时接管活动窗口,只要它在后台继续执行不同的操作就可以了。奇怪的是,在我以前的项目(windows, c#, mstest)中,chromedriver的行为完全像这样,没有任何额外的设置。请帮忙,我知道很少有其他团队有这个问题。似乎这个问题只在Mac和linux上存在
在有这个问题很长一段时间后,我终于找到了一个很好的解决方案。这个问题仍然存在于ChromeDriver级别,所以如果这方面有任何更新请告诉我。
在Ubuntu后台运行测试最简单的方法是使用VNC Server。以下是您应该遵循的步骤:
-
从ubuntu终端安装vnc server:
sudo apt-get install vnc4server
-
以任意数字启动服务器(我使用7)。第一次这样做时输入vnc服务器的密码(记住它!)。
vncserver:7
-
要全屏启动服务器,请在最后一个命令中添加"geometry",以显示屏幕分辨率,例如:
vncserver:7 -geometry 1920x1080
-
下载一些VNC查看器。我使用真正的VNC。
-
进入Real vnc查看器,启动新连接并输入:
VNC Server: localhost:7
Encryption: 让VNC Server选择
-
按"连接"键并输入vnc服务器密码(步骤2中的密码)。
-
应打开新窗口,在其中打开新终端
-
从终端运行测试。我使用java maven项目,所以对我来说它是这样工作的。导航到项目文件夹并运行:mvn clean install
如果你想在隐藏模式下运行测试,只使用终端(不打开vncviewer),使用这个命令:
cd路径//项目
xterm -display localhost:7 -e mvn clean install
如果你想停止服务器:vncserver -kill:7
对于我来说(我在使用Chrome的Grails项目的功能测试中遇到了同样的问题;
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized --disable-popup-blocking");
new ChromeDriver(options);
对