我想從網頁中提取所有輸入字段與他們的標題和元素的細節,並把它們放在一個HashMap中,以便以後在像JUnit測試WebDriver - 無法找到元素,提取網頁輸入字段
這是測試類中的示例代碼:
accountDetails.chooseField("Date of Birth");
accountDetails.changeValueTo(dateOfBirth);
這就是網頁的源文件的一部分。我試圖讓標籤名稱爲「輸入」的所有字段。不幸的是,同時運行測試,我發現了以下硒錯誤:
org.openqa.selenium.NoSuchElementException: Unable to locate element: **{"method":"tag name","selector":"input"}
<tbody>
<tr>
<tr class="subtitle">
<tr>
<tr class="subtitle">
<tr>
<tr class="subtitle">
<tr>
<tr>
<td class="caption">Staff Member</td>
<td>
<input id="StaffMember" type="text" maxlength="6" size="6" value="" name="StaffMember">
</td>
<tbody>
這就是提取類:
public class AccountDetails {
WebDriver driver;
WebElement accountDetailsTable;
WebElement radioButton;
HashMap<String, WebElement> fields = new HashMap<String, WebElement>();
WebElement addCustomerButton;
public AccountDetails(WebDriver driver) {
this.driver = driver;
driver.switchTo().defaultContent();
driver.switchTo().frame(driver.findElement(By.name("officePane")));
driver.switchTo().frame(driver.findElement(By.name("MainArea")));
accountDetailsTable = driver.findElement(By.tagName("tbody"));
addCustomerButton = accountDetailsTable.findElements(By.className("btn_def")).get(0);
List<WebElement> tr = accountDetailsTable.findElements(By.tagName("tr"));
for (WebElement el : tr) {
List<WebElement> td = el.findElements(By.tagName("td"));
if (td.size() > 0) {
fields.put(td.get(1).getText(), td.get(0).findElement(By.tagName("input")));
}
}
}
只是好奇,在webelements存儲會導致staleelementexceptions。無論如何,你不需要再次找到這個元素。 – 2013-02-26 17:11:55