2014-12-04 3 views
0

Im пытается реализовать щелчок по элементу в таблице. В настоящий момент im ищет таблицу для конкретной строки. Если строка соответствует, я возвращаю элемент к его вызывающему методу и пытаюсь реализовать клик, но вызывающий метод никогда не нажимает на элемент.Selenium does not implement click

Любая помощь будет оценена по достоинству.

Проверить метод таблицы.

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

Если вы ищете определенную строку, вы можете использовать XPath:

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

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

Вы можете попробовать любой из ниже процесса:

1- Tr у заменив код:

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