有没有更好的方法在Java中编写此代码(用于Web表处理)?

时间:2012-09-26 10:48:56

标签: java selenium automation selenium-webdriver

我有两种方法可以做同样的事情。不幸的是,选项二工作了一些时间(10次中有5次)...选项一很少工作(10次中有2次)...有没有更好的方法来编写这段代码......

一:

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次(在同一页面中)。有时可以工作,但在调用此方法的某个时候不起作用。

1 个答案:

答案 0 :(得分:2)

可以使用查找的xpath单击webtable链接。

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);

希望这有帮助。