2009-12-15 65 views
1

我有一個Selenium測試以下XPath語句:XPath來CSS選擇

//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

#tblResearchItems> TBODY> TR [TD>跨度[文本()= '碘泊']]> TD [4]>輸入 可能? – NotMyself 2009-12-15 18:59:25

+0

可以請你把HTML放在那個元素的周圍,這樣我們就可以看到我們如何將它改變爲CSS選擇器。你還沒有提供足夠的信息 – AutomatedTester 2009-12-15 19:15:13

回答

4

CSS定位符爲css=span.CN,其中包含文本IPODate的跨度。

Saucelabs有它的工作原理在他們blog

UPD良好的explanaton: 不幸的是CSS時不會上下移動,直到它發現它是什麼之後解析整個樹。這是XPath如此之慢的主要原因。 CSS找到一個項目,然後可以橫向移動DOM。下面的CSS將會找到TD之後的輸入框,它具有class=TCN,它用表格中的文本保存您的範圍。

CSS:table > tbody > tr > td.TCN + td + td > input

+0

雖然這是蹭。我正在嘗試在包含文本「IPODate」的跨度的表格行中獲取輸入元素。 – NotMyself 2009-12-16 00:17:58

+0

我已更新我的答案,希望有所幫助! – AutomatedTester 2009-12-16 08:42:40