在测试运行期间,如何防止Selenium RC窃取窗口焦点?

我知道我可能只是少数人,但我必须在我的测试运行的同时使用我的机器。我总是遇到的问题是,当我使用Selenium RC运行测试用例时,浏览器窗口总是在窃取焦点。这使我无法在我退出之前的一天结束时每天多次运行我的测试。我试过Selenium Grid,但是我无法让它只监听localhost上的请求,而不是0.0.0.0(来自我的网络管理员的要求)。 我已经挖掘了Selenium文档和大量的Selenium站点,但我还没有找到明确的答案。在我的测试运行时,我可以阻止Selenium RC测试从窃取窗口焦点吗? 我正在使用Firefox 3.6.13。     
已邀请:
在Linux上,您可以在不同的显示器上启动vncserver(例如:8或其他),然后让Selenium和您的Firefox实例使用该显示器。对我们工作的地方很有用。     
在VM中运行它。具有在不同操作系统和浏览器下测试能力的额外好处。 我的理解是你无法避免在同一台机器上偷走焦点。     
你在运行linux吗? FirefoxProfile类的设置文档很少,加载了一个特殊的库以避免在linux上集中窃取 - 将其设置为true: http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/firefox/FirefoxProfile.html#setAlwaysLoadNoFocusLib(boolean)     
我们通过在测试之间共享selenium实例来解决这个问题。然后硒只在整个试运行期间尝试偷一次焦点,这也不算太糟糕。 如果你使用JUnit来编写Selenium脚本,你可以使用Spring的
SpringJUnit4ClassRunner
将selenium实例注入bean。 为Springѭ1定义测试上下文(如果您不熟悉如何设置Spring XML配置文件,请使用google)并包含selenium实例:
<bean class="com.thoughtworks.selenium.DefaultSelenium" name="selenium">
    <constructor-arg index="0">
        <value>localhost</value>
    </constructor-arg>
    <constructor-arg index="1">
        <value>4444</value>
    </constructor-arg>
    <constructor-arg index="2">
        <value>*firefox</value>
    </constructor-arg>
    <constructor-arg index="3">
        <value>http://localhost:8080/webapp/</value>
    </constructor-arg>
</bean>
然后在你的测试中,注入selenium实例而不是
new
'ing它:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:selenium.xml")
public class WebappIT {

    @Resource
    private Selenium selenium;

    ... test code ...

}
我有点简化了这一点,在我们的实际代码中,我们将selenium实例包装在一个提供者类中,这样我们只能调用selenium.start()一次。     
UPDATE 我找到了解决Firefox窗口的问题。如果您像我一样运行Selenium作为独立服务器,那么您可以添加:
-browserSessionReuse
对启动Selenium测试用例的ant任务。这样可以节省大量时间,因为在运行selenium测试时,我不必等待两个新的Firefox窗口打开。解决方法是,如果每个测试都是独立测试,则每次测试开始时都必须注销站点。我通过编辑登录方法来快速完成此操作以查找我的注销链接。如果存在注销链接,则我的测试单击注销链接,并等待登录页面可用,然后继续测试。     
我们不能在同一台机器上做到这一点。我们需要VM,或者我们应该在控制器级别对其进行编程,以便我们的脚本不会启动任何浏览器来运行脚本。     
使用chrome而不是firefox为我工作。只需在另一个工作区启动它就可以了。     
如果您在Linux上运行,则可以使用多个桌面并设置为浏览器以始终在特定桌面上打开,并在不同的桌面上打开IDE。 这就是我在Ubuntu中的表现,需要5分钟:https://askubuntu.com/a/90014     

要回复问题请先登录注册