0

タイトルと要素の詳細を含むWebページからすべての入力フィールドを抽出し、後でJUnitテストで使用するためにHashMapに配置しようとしています。

これは、テストクラスのサンプルコードです。

accountDetails.chooseField("Date of Birth");
accountDetails.changeValueTo(dateOfBirth);

これはページソースの一部です。タグ名が「input」のすべてのフィールドを取得しようとしています。残念ながら、テストの実行中に次のセレンエラーが発生します。

org.openqa.selenium.NoSuchElementException:要素が見つかりません:** {"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")));
            }
        }
    }
4

2 に答える 2

1

すべての入力をキャッチするには、通常、次のようにします。

List<WebElement> inputList = driver.findElements(By.xpath("//input"));

このように使用した後(愚かな例:D):

void showInputValue (List<WebElement> c) {
    for (WebElement e : c){
        Systeme.println(e.getAttribute("value"));
    }
}
于 2013-04-03T07:16:53.190 に答える
0

最後のtrに2つのtdがあることがわかります。td.get(1).findElement(By.tagName("input"))正しい結果が得られます。

于 2013-02-26T10:33:44.880 に答える