一尘不染

XPath到CSS选择器

selenium

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


阅读 601

收藏
2020-06-26

共1个答案

一尘不染

CSS定位器css=span.CN用于其中包含文本IPODate的跨度。

Saucelabs在博客上对它的工作原理有很好的解释

UPD:
不幸的是,当上下移动时,CSS不会解析整个树,直到找到之后的内容为止。这是XPath这么慢的主要原因。CSS找到一个项目,然后可以在DOM中横向移动。下面的CSS会发现输入框是后TDclass=TCN持有与表中的文本的跨度。

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

2020-06-26