如何在selenium中使用其表id找到网页元素的id

时间:2013-04-26 07:51:50

标签: java selenium

我的应用程序有一个包含多行的网格。行具有编辑选项,该选项加载另一页以更新个人信息。行编辑图标ID为:

"ctl00_ContentPlaceHolder1_grdEmployeeMaster_ctl00_ctl20_EditButton"

如果我们点击此图标,则会打开个人页面。个人页面中的元素是从头开始的 "ctl00_ContentPlaceHolder1_grdEmployeeMaster_ctl00_ctl21_txtFirstName"基于编辑图标ID。

问题是我可以点击带有表ID概念的编辑图标。命令是:

selenium.click("//table[@id='ctl00_ContentPlaceHolder1_grdEmployeeMaster_ctl00']
//tr[td[.='"kannan"']]/td/input[@type='image']");

但是我无法获得编辑图标的ID。

如果我获得了编辑图标的ID,我可以通过在编辑图标ID中添加“1”来轻松更改个人页面元素ID。

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

仅使用ID

selenium.click("ctl00_ContentPlaceHolder1_grdEmployeeMaster_ctl00");

答案 1 :(得分:0)

你可以这样做:

  public ArrayList<String> IdsOfEditOption()
{
   WebElement table =driver.findElement(By.id("ctl00_ContentPlaceHolder1_grdEmployeeMaster_ctl00"));
   WebElement tbody=table.findElement(By.tagName("tbody"));
   List<WebElement> rows=tbody.findElements(By.tagName("tr"));
   ArrayList<String> ListOdIds=new ArrayList<>();

   for(int i=0;i<rows.size();i++)
   {
     WebElement EditOption = tbody.findElement(By.xpath("//table[@id='ctl00_ContentPlaceHolder1_grdEmployeeMaster_ctl00']/tbody/tr["+(i+1)+"]/td"));
     String EditOptionId=EditOption.getAttribute("id");
     ListOdIds.add(EditOptionId);
   }

   return ListOdIds;
}