【问题标题】:Finding table cell using locator after tableCellAddress finds the celltableCellAddress 找到单元格后使用定位器查找表格单元格
【发布时间】:2017-07-14 16:58:44
【问题描述】:

我有一个由 javascript 填充的 JSP 页面,导致典型的表格元素级联 <table><tbody><tr><td>。填充后,我看到了我想要使用的文本

 getTable("tableLister.listTable.1.1")

该表还有一个class=clsDisplayTableBody
我想为感兴趣的行单击第 0 列中的复选框。但是,所有这些测试都失败了

 isElementPresent("//*[text()="+cellContents+"]/../td[0]"))
 isElementPresent("//table[@class='clsDisplayTableBody']//tr[1]/td[0]"))
 isElementPresent("css='clsDisplayTableBody' tr:nth-child(1) td:nth-child(0)"))
 isElementPresent("//xpath=id('tableLister.listTable')/descendant::tr[1]/descendant::td[0]"))
 isElementPresent("//table[@id='tableLister.listTable']//tbody/tr[1]/td[0]"))
 isElementPresent("//table[@id='tableLister.listTable']//tr[1]/td[0]"))

还有什么我可以尝试的吗?

【问题讨论】:

  • 你还没有提供任何 XML 文档,你认为任何人都可以理解这些表达式打算选择什么?
  • 好问题,+1。有关所有 XPath 表达式的问题之一的解释,请参阅我的答案。
  • 我不同意。这个问题没有很好的定义。投反对票是我的。

标签: xpath html-table cell selenium-rc


【解决方案1】:

我想点击复选框 感兴趣的行的第 0 列。 但是,所有这些测试都失败了

isElementPresent("//*[text()="+cellContents+"]/../td[0]"))  
isElementPresent("//table[@class='clsDisplayTableBody']//tr[1]/td[0]"))  
isElementPresent("css='clsDisplayTableBody' tr:nth-child(1) td:nth-child(0)"))  
isElementPresent("//xpath=id('tableLister.listTable')/descendant::tr[1]/descendant::td[0]")) 
isElementPresent("//table[@id='tableLister.listTable']//tbody/tr[1]/td[0]")) 
isElementPresent("//table[@id='tableLister.listTable']//tr[1]/td[0]")) 

一个明显的错误是使用0 作为索引。 XPath 是基于 1 的

将索引增加1后,您可能更接近获得想要的结果。

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多