我在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单元格。
答案 0 :(得分:4)
CSS定位器为css=span.CN
,其中包含文本IPODate的范围。
Saucelabs很好地解释了它在blog
上的工作原理 <强> UPD:强>
不幸的是,当上下移动直到找到它之后,CSS不会解析整个树。这是XPath如此缓慢的主要原因。 CSS找到一个项目,然后可以通过DOM横向移动。下面的CSS会找到TD
之后的输入框,其class=TCN
保存表格中包含文字的范围。
CSS: table > tbody > tr > td.TCN + td + td > input