我试图实现对表格中元素的点击。目前我正在搜索表格中的特定字符串。如果字符串匹配,则将元素返回到其调用方法并尝试实现单击,但调用方法永远不会单击该元素。
任何帮助都将不胜感激。
检查表方法。
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);
}
}
答案 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)]"));