在Selenium IDE中点击包含部分id和标题的XPath按钮

22

我正在使用Selenium IDE,在网页上使用部分id和元素标题的XPath来单击表格内的按钮。 我正在使用的XPath是:

xpath=//*[contains(@id, 'ctl00_btnAircraftMapCell')]//*[contains(@title, 'Select Seat')] 

这就是我试图点击的按钮的完整HTML代码示例:

<li id="ctl00_MainContent_repAircraftMap_ctl20_repAircraftMapRow‌​_ctl00_liAircraftMap‌​Cell" class=""> 
    <a id="ctl00_MainContent_repAircraftMap_ctl20_repAircraftMapRow‌​_ctl00_btnAircraftMa‌​pCell" href="javascript:void(0)" seatnumber="20A" mapbindattribute="1124" title="Select Seat 20A" onclick="SeatClick(1124);"></a> 
</li>

我构建的方式是否不正确?它没有起作用!


分享该按钮的HTML。 - Amey
如果你能在这里格式化代码,并且在编写问题时尽可能地注意可读性,那么你的努力通常会受到赞赏。 - halfer
<li id="ctl00_MainContent_repAircraftMap_ctl20_repAircraftMapRow_ctl00_liAircraftMapCell" class=""> <a id="ctl00_MainContent_repAircraftMap_ctl20_repAircraftMapRow_ctl00_btnAircraftMapCell" href="javascript:void(0)" seatnumber="20A" mapbindattribute="1124" title="Select Seat 20A" onclick="SeatClick(1124);"></a> </li> - MikeH
这是我尝试点击的按钮示例的整个HTML代码 - 谢谢,Mike - MikeH
关于可读性的好处,这是一个很好的观点!我的意思是,当我使用上述xpath执行“click”或“clickAt”命令时,响应是“未找到”。 - MikeH
1个回答

59

现在您已经提供了HTML示例,我们能够看到您的XPath略有错误。虽然它是有效的XPath,但它在逻辑上是错误的。

您的XPath代码如下:

//*[contains(@id, 'ctl00_btnAircraftMapCell')]//*[contains(@title, 'Select Seat')]

这段话的意思是:

获取所有具有包含“ctl00_btnAircraftMapCell”的“ID”的元素。在这些元素中,获取任何具有包含“Select Seat”标题的子元素。

实际上您想要的是:

//a[contains(@id, 'ctl00_btnAircraftMapCell') and contains(@title, 'Select Seat')]

翻译为:

获取所有同时符合以下条件的锚点元素:id包含ctl00_btnAircraftMapCell,且title包含Select Seat


3
这很可能是stackoverflow上解释最好的答案!我从未知道你可以像在xpath表达式中那样使用“and”,感谢您的分享。 - dmeehan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接