Selenium没有实现点击

时间:2014-12-04 18:05:48

标签: java selenium selenium-webdriver

我试图实现对表格中元素的点击。目前我正在搜索表格中的特定字符串。如果字符串匹配,则将元素返回到其调用方法并尝试实现单击,但调用方法永远不会单击该元素。

任何帮助都将不胜感激。

检查表方法。

public static WebElement chk_TableContentsByXpath(String searchString, String elements){
    WebElement element = null;
        try{
            // Grab the table
            WebElement table = driver.findElement(By.xpath(elements));

            // Now get all the TR elements from the table
            List<WebElement> allRows = table.findElements(By.tagName("tr"));
            // And iterate over them, getting the cells
            for (WebElement row : allRows) {
                List<WebElement> cells = row.findElements(By.xpath("./*"));
             for (WebElement cell : cells) {
                // System.out.println(cell.getText());
                    if(cell.getText().equals(searchString)){
                        element = cell;
                        return element;
                    }   
             }
            }
     }catch (Exception e){
                Log.error("Class Utils | Method GetTableContents | Exception occured while search table : "+e.getMessage());
                throw (e);
            }
    return element;
        }

通话方法

package appModules;

import pageObjects.MC_Page_links;
import pageObjects.MC_ProductTypes_Page;
import pageObjects.TopNav_links;
import utility.Constant;
import utility.Utils;

public class MC_MaterialProductType_UpdateProductType_Action {

    public static void Execute(int iTestCaseRow) throws Exception{ 

        Utils.waitForElement(TopNav_links.lnk_MasterControl());

        TopNav_links.lnk_MasterControl().click();

        MC_Page_links.lnk_ProductTypes();

        Utils.chk_TableContentsByXpath(Constant.MC_ProductTypeName,Constant.MC_ProductTypesTable).click();//this line doesnt implement the click

        MC_ProductTypes_Page.inpt_UpdateProductName().sendKeys(Constant.MC_ProductTypeNameUpdate);

    }
}

2 个答案:

答案 0 :(得分:0)

如果您要查找特定字符串,可以使用xpath:

WebElement table = driver.findElement(By.xpath(elements));

table.findElement(By.xpath("//tr[text() = '" + searchString + "']")).click();

答案 1 :(得分:0)

您可以尝试以下任一过程:

1 - 尝试替换代码:

List<WebElement> cells = row.findElements(By.xpath("./*"));

List<WebElement> cells = row.findElements(By.xpath("//td"));

2 - 此外,您可以使用以下代码从方法 chk_TableContentsByXpath 直接返回元素:

WebElement table = driver.findElement(By.xpath(elements));

element = table.findElement(By.xpath("//td[contains(text(),searchString)]"));