我在selenium测试中有以下xpath语句:
//tbody/tr[td/span[text()='IPODate']]/td[4]/input
它达到了我想要的,但是我的测试在IE6中非常缓慢。有人知道我将如何做与CSS选择器相同的选择器吗?我想我了解如何执行上述操作,但text()=“ IPODate”部分除外。
以下是我要从中选择的表格示例:
<table cellspacing="0" cellpadding="4" border="0" id="tblResearchItems" class="coolTable SingleItem"> <tbody>
....很多很多行
<td> <input type="button" value="A" onclick="sA('secm.Company', 'IPODate', 299)" class="RButton NarrowButton2 A Show_N"/> </td> <td class="TCN"> <span class="CN">IPODate</span><f/> </td> <td> <g/> </td> <td class="TCV VerticalAlign"> <input type="text" value="" onfocus="stLT(); hideLB(true)" onblur="mustBeDate($(this));" class="UpUI_Y date NDD hasDatepicker" id="dp1260909771780"/> <img class="ui-datepicker-trigger" src="../images/calendar.gif" alt="..." title="..."/> <div/> </td> </tr>
…还有很多行…
在此示例中,只有一行具有IPODate单元。
CSS定位器css=span.CN用于其中包含文本IPODate的跨度。
css=span.CN
Saucelabs在博客上对它的工作原理有很好的解释
UPD: 不幸的是,当上下移动时,CSS不会解析整个树,直到找到之后的内容为止。这是XPath这么慢的主要原因。CSS找到一个项目,然后可以在DOM中横向移动。下面的CSS会发现输入框是后TD有class=TCN持有与表中的文本的跨度。
TD
class=TCN
CSS: table > tbody > tr > td.TCN + td + td > input
table > tbody > tr > td.TCN + td + td > input