XPath to CSS Selector - PullRequest
       11

XPath to CSS Selector

1 голос
/ 15 декабря 2009

У меня есть следующий оператор 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 Ответ

4 голосов
/ 16 декабря 2009

локатор CSS равен css=span.CN для диапазона, в котором есть текст IPODate.

Saucelabs имеют хорошее объяснение того, как это работает в их блоге

UPD: К сожалению, CSS не будет анализировать все дерево при перемещении вверх и вниз, пока не найдет, что ему нужно. Это главная причина, почему XPath такой медленный. CSS находит элемент и затем может перемещаться в боковом направлении через DOM. Приведенный ниже CSS найдет поле ввода после TD, в котором есть class=TCN, которое содержит ваш диапазон с текстом в таблице.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...