如何在 Selenium Web 驱动程序中查找元素 by.xpath

How to find elements in Selenium Web Driver by.xpath

我有这个 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");
        }

    }

在此先致谢!

您可以找到具有所需 @classdiv 元素以及具有所需文本的 span 子元素:

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

如果您想要文本为 "Revert" 的元素,请使用以下代码:

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

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

的 class
enabled

一个 div 包含禁用。

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