Javascript Selenium RC:如何单击网格中显示的链接?

Javascript Selenium RC:如何单击网格中显示的链接?,javascript,selenium,Javascript,Selenium,我正在使用SeleniumRC并用java创建所有脚本(使用Junit测试用例) 我想单击一个具有“编辑”链接的网格列。 我的代码是 selenium.click("//table[@id='ctl00_POMSContentPlaceHolder_gvBillingCompany']//tr["+gRow+"]//td["+gCol+"]"); gRow和gCol被定义为整数,它们的值随着移动到下一行/列而变化 如果需要在这方面做些什么,请告诉我。一些注意事项: 您可能希望单击链接(),而

我正在使用SeleniumRC并用java创建所有脚本(使用Junit测试用例)

我想单击一个具有“编辑”链接的网格列。 我的代码是

selenium.click("//table[@id='ctl00_POMSContentPlaceHolder_gvBillingCompany']//tr["+gRow+"]//td["+gCol+"]");
gRow
gCol
被定义为整数,它们的值随着移动到下一行/列而变化

如果需要在这方面做些什么,请告诉我。

一些注意事项:

  • 您可能希望单击链接(
    ),而不是单元格
  • 子选择器需要一个斜杠:
    //父/子
  • 我很确定您需要
    tbody
    ,它是由浏览器隐式添加的:
    //table/tbody/tr[2]/td[3]/a[1]
  • 使用css选择器可能会更幸运:
    css=表tr:n个孩子(2)td:n个孩子(3)a
尝试以下操作:

selenium.click("xpath=id('ctl00_POMSContentPlaceHolder_gvBillingCompany')/descendant::tr[" +gRow+ "]/descendant::td["+gCol+"]");
以下是来自


在XPath中,
//
/genderant或self::node()//
的简写,但位置路径
//para[1]
与位置路径
/genderant::para[1]
的意思不同。后者选择第一个子代para元素;前者选择作为其父级第一个para子级的所有子代para元素。

+1尽管他不需要添加
tbody
,如果他编写
//table//tr[2]
,因为
//
不仅在下一个更深层次上,而且在所有更深层次上查找子代。不过,这可能会使嵌套表变得一团糟……嘿,Kobi,我包括了“/tbody”,它可以工作……谢谢谢谢谢谢……Woooppppyyyyyyyy。。。。。非常感谢:)添加
t车身
可能会使定位器更脆弱。另外,您的CSS选择器示例有一个输入错误-您在第二个实例中使用了两次
tr
,而不是
td
。很好,谢谢。我同意,它也有潜在的问题。这就是我建议使用css方式的原因之一。@Saara-它有点脆弱,因为它在很大程度上取决于页面的结构,并且因为浏览器可能不会添加
tbody
标记(尽管他们可能会添加)。CSS定位器可以更通用(例如,如果链接或单元格上有一个类,或者它有一个id)。推荐CSS定位器:-引用:
最有经验的Selenium用户推荐CSS作为他们的定位策略,因为它比XPath快得多,并且可以在固有的HTML文档中找到最复杂的对象。