如何在 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");
}
}
在此先致谢!
您可以找到具有所需 @class
的 div
元素以及具有所需文本的 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 包含禁用。
所以让我知道这是否有帮助,或者您需要其他东西。
我有这个 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");
}
}
在此先致谢!
您可以找到具有所需 @class
的 div
元素以及具有所需文本的 span
子元素:
//div[contains(@class, 'tabToolbarButton') and span = 'Revert']
如果您想要文本为 "Revert" 的元素,请使用以下代码:
element = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.tabToolbarButton.tab-widget.disabled>span.tabToolbarButtonText")));
还有一件事,在你的新 html 中,没有包含
的 classenabled
一个 div 包含禁用。
所以让我知道这是否有帮助,或者您需要其他东西。