1

同じことを行う2つの方法があります。残念ながら、オプション 2 は数回 (10 回中 5 回) 機能します... オプション 1 はめったに機能しません (10 回中 2 回)... このコードを記述するためのより良い方法はありますか...

1:

public static void clickOnLinkinWebTable(WebElement webTable, String lookUpValue) throws MyException {
    for (WebElement row : webTable.findElements(By.xpath("tr"))) {
        for (WebElement col : row.findElements(By.xpath("td")))
            if (col.getText().equals(lookUpValue)) {
                col.findElement(By.partialLinkText(lookUpValue)).click();
                return;
            }

    }
}

二:

public static void clickOnLinkinWebTable(String tableXpathRow, String lookUpValue) throws MyException {
    int row_cnt = driver.findElements(By.xpath(tableXpathRow)).size();
        for (int row_num = 1; row_num <= row_cnt; row_num++) {
                int col_cnt = driver.findElements(By.xpath(tableXpathRow+"["+row_num+"]"+"/td")).size();
                for (int col_num = 1; col_num <= col_cnt; col_num++) {
                String cellValue = driver.findElement(By.xpath(tableXpathRow+"["+row_num+"]/td["+col_num+"]")).getText();
                if(lookUpValue.equalsIgnoreCase(cellValue)){
                    WebElement elementLink = driver.findElement(By.xpath(tableXpathRow+"["+row_num+"]/td["+col_num+ "]/a"));
                elementLink.click();
                return;
            }
        }
    }
}

時々動作する/めったに動作しない: テスト スイートでテストを実行しています。このメソッドは、テスト スイート (同じページ内) で少なくとも 15 回呼び出されます。このメソッドが呼び出されると、機能する場合もありますが、機能しない場合もあります。

4

1 に答える 1

2

Web テーブル リンクをクリックするためのルックアップの xpath を使用できます。

driver.findElement(By.xpath(path)).click();

どこ

path="//td[contains(text(),lookupvalue)]"

(これは、以下のような文字列連結によって行うことができます)

String s="//td[contains(text(), ";
String qt=")]";
String path=(s.concat(lookupvalue)).concat(qt);

お役に立てれば。

于 2012-09-26T11:09:29.573 に答える