XPath到CSS选择器

时间:2009-12-15 18:57:07

标签: xpath selenium css-selectors

我在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单元格。

1 个答案:

答案 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