如何在xlen

时间:2016-06-21 14:22:10

标签: java selenium xpath selenium-webdriver selenium-ide

我有这个HTML输出(Firebug):

<a class="tab-toolbar-button tab-widget tab-disabled" title = "Revert All">
<span clas = "tab-toolbar-button-icon tab-icon-revert"></span>
</a>

但升级服务器和新界面后,我有这个:

<div class="tabToolbarButton tab-widget disabled">
  <span class="tabToolbarButtonImg tab-icon-revert"></span>
  <span class="tabToolbarButtonText">Revert</span>
</div>

我的Java代码是:

private static void doResetFilter() throws Exception {
    waitForLoadingSpinner();
element =wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(@class, 'tab-toolbar-button')][@title='Revert All']")));

boolean isEnabled = element.getAttribute("class").contains("tab-enabled");

if (isEnabled) {
        log("reset filter");
        element.click();
    }
    else {
        log("filter reset not needed");
    }
}

现在我需要修改我的Java代码以与新版本兼容。因为我是Selenium和Java的新手(我继承了这段代码),如何用文本更改部分?

我试过这样但仍然没有结果。有人可以帮忙吗?

private static void doResetFilter() throws Exception {
        waitForLoadingSpinner();

        element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class=’Revert’]")));


        boolean isEnabled = element.getAttribute("class").contains("enabled");

        if (isEnabled) {
            log("reset filter");
            element.click();
        }
        else {
            log("filter reset not needed");
        }

    }

先谢谢!

2 个答案:

答案 0 :(得分:0)

您可以找到div元素,其中@class所需的span孩子带有所需的文字:

//div[contains(@class, 'tabToolbarButton') and span = 'Revert']

答案 1 :(得分:0)

如果你想要的文本是&#34;还原&#34;使用以下代码:

element = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.tabToolbarButton.tab-widget.disabled>span.tabToolbarButtonText")));

还有一件事,在你的新html中,没有包含

的跨度类
enabled

一个div包含已禁用。

所以让我知道这有帮助与否,或者你需要其他东西。