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