2

我正在使用新的 selenium webdriver,一切都很好,但是如果出现连接问题并且浏览器在没有我的指导或其他各种原因的情况下关闭,我会收到如下错误消息:-

Exception in thread "Thread-2" org.openqa.selenium.WebDriverException: Error communicating with the remote browser. It may have died.

在这些情况下,我想抓住它并调用一些代码来对表等运行更新,以通知用户这已经发生了,我该怎么做?

我试图变得聪明并从“动作”数据库中运行它,代码基本上使用一个很大的“如果动作 = XYZ 调用 blah”列表按顺序运行这些动作,就像这样”

if (actionType.equals("NAVIGATETO")){
        actionPassed = threadAction.NavigateTo(this);
    }
    else if(actionType.equals("TYPE")){
        actionPassed = threadAction.Type(this);
    }
    else if(actionType.equals("CLOSEBROWSER")){
        actionPassed = threadAction.CloseBrowser(this);
    }...

我需要把每一个都包装起来试试看吗?或者我是否需要在每个动作的下一个级别实施 try 和 catch?这是一个动作的例子......

public boolean browserNav(individualThreadSession threadsesh){

if(threadsesh.stringValue.contains("BACK")){
            threadsesh.driver.navigate().back();
        }
        else if(threadsesh.stringValue.contains("REFRESH")){
            threadsesh.driver.navigate().refresh();
        }
        else if(threadsesh.stringValue.contains("GOTO")){
            threadsesh.driver.navigate().to(threadsesh.stringValue);
        }
        return(true);
    }

感谢您的任何建议,我真的不知道从哪里开始这个想法?!

4

2 回答 2

3

解决方案 1

如果使用 JUnit 执行,可以扩展 TestWatcher 类:

public class TestRules extends TestWatcher {

    @Override
    protected void failed(Throwable e, Description description) {
        // This will be called whenever a test fails.
    }

因此,在您的测试类中,您可以简单地调用它:

public class testClass{

@Rule
public TestRules testRules = new TestRules();

@Test
public void doTestSomething() throws Exception{
    // If the test fails for any reason, it will be caught be testrules.
}

解决方案 2 查看EventFiringWebDriver。您可以将WebDriverEventListener附加到它并覆盖 onException 方法。

就像是:

EventFiringWebDriver driver = new EventFiringWebDriver(new FirefoxDriver());
WebDriverEventListener listener = new AbstractWebDriverEventListener() {
    @Override
    public void onException(Throwable t, WebDriver driver) {
        // Take action
    }
};
driver.register(listener);
于 2013-09-17T17:40:16.193 回答
0

您可以使用QAF selenium 测试框架- QAF 以前的 ISFW并在 WebDriverListener 中提供 onFailure 的实现

于 2013-09-18T16:06:56.993 回答