![](/img/trans.png)
[英]How to verify whether a Button is clicked or not with Selenium WebDriver using Java
[英]JavaScript button can only be clicked once with selenium Webdriver
我正在嘗試將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 + "'");
}
}
沒有拋出異常。 至少與代碼的這一部分有關。
我的實現存在幾個問題。 首先,可以通過不選擇li.tab
對象,而是選擇其中的a
類來改進它。 從那里開始,有2種解決方案對我有用。 首先是使用
webElement.sendKeys(Keys.ENTER);
第二個(imho更優雅的解決方案)是獲取控制該對象的硒驅動器對象的實例,然后使其執行命令以單擊選項卡。 這是完整的更正方法。
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 + "'");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.