0

我正在尝试将 Selenium 与 JUnit 一起使用,但我无法完成我的测试,因为我的按钮执行似乎只发生了一次。这是一些代码:

    JQueryUITab navTab = new JQueryUITab(driver.findElement(By.cssSelector("nav ul.tabs")));

    try {
        navTab.selectTab("Tab1");
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        navTab.selectTab("Tab2");
    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.print(navTab.getSelectedTab()); 

控制台打印输出将显示"Tab1"。这个 JQueryUITab 对象是一个自定义对象。这是内部工作原理:

public String getSelectedTab() {
    List<WebElement> tabs = jQueryUITab.findElements(By.cssSelector("li.tab"));
    for (WebElement tab : tabs) {
        if (tab.getAttribute("class").equals("tab selected")) {
            return tab.getText();
        }
    }
    return null;
}

public void selectTab(String tabName) throws Exception {
    boolean found = false;
    List<WebElement> tabs = jQueryUITab.findElements(By.cssSelector("li.tab"));

    for (WebElement tab : tabs) {
        if(tabName.equals(tab.getText().toString())) {
            tab.click();
            found = true;
            break;
        }
    }

    if (!found) {
        throw new Exception("Could not find tab '" + tabName + "'");
    }
}

没有抛出异常。至少在这部分代码之前或之前。

4

1 回答 1

0

我的实现有几个问题。首先,可以通过选择li.tab对象而不是对象a内部的类来改进它。从那里开始,有 2 个解决方案对我有用。首先是使用

webElement.sendKeys(Keys.ENTER);

第二个(恕我直言更优雅的解决方案)是获取控制该对象的硒驱动程序对象的实例,然后让它执行单击选项卡的命令。这是完整的更正方法。

    public void selectTab(String tabName) throws Exception {
        boolean found = false;
        List<WebElement> tabs = jQueryUITab.findElements(By.cssSelector("li.tab a"));
        for (WebElement tab : tabs) {
            if(tabName.equals(tab.getText().toString())) {              
//              tab.sendKeys(Keys.ENTER);
                WrapsDriver wrappedElement = (WrapsDriver) jQueryUITab;
                JavascriptExecutor driver = (JavascriptExecutor) wrappedElement.getWrappedDriver();
                driver.executeScript("$(arguments[0]).click();", tab);          
                found = true;
                break;
            }
        }

        if (!found) {
            throw new Exception("Could not find tab '" + tabName + "'");
        }
    }
于 2013-06-12T18:22:44.513 回答