dalekjs нажмите на ссылку, содержащую текст

То, что я пытаюсь сделать, это получить элемент из списка. Я хочу взять текст в ссылке и щелкнуть ссылку, если она содержит правильный текст. это html-код:

<table>
     <tr>
        <td><a href='...'>I need help</a></td>
        <td><a href='...'>Oh hello</a></td>
        <td><a href='...'>Lorem ipsum</a></td>
     </tr>
</table>

Я пробовал это:

.click('table > tr > td > a:contains("I need help")')

Но почему-то не работает.

Я не могу использовать это:

.click('table > tr > td:nth-child(1) > a)

потому что по мере роста сайта будет добавлено больше тегов tr.

Любые идеи ?


person Sten Pelzer    schedule 09.05.2014    source источник


Ответы (2)


Во-первых, ваш HTML-код немного искажен; a должен быть дочерним элементом элемента, а не наоборот. Я предлагаю прочитать документы MDN относительно элементов.

Что касается вашей проблемы с Далеком; Dalek использует механизм выбора CSS браузера, который он выполняет. Это изменится в будущем (заменено Sizzle как унифицированным механизмом выбора), но я не знаю, когда именно это будущее наступит.

Что касается псевдоселектора :contains() - насколько я знаю, его больше нет. Текущая спецификация CSS3 удалила его, и поэтому вы не можете использовать его в своих селекторах Dalek.

person jordy korsten    schedule 15.05.2014

Я не могу найти способ проверить текст ссылки, но если вы знаете href, попробуйте вместо этого использовать его.

.click('a[href="uniqueURL"]')
person dmpost    schedule 15.05.2014
comment
я тоже пробовал это, но проблема в том, что мой сайт сам создает href, все начинается одинаково и заканчивается чем-то вроде /231983nkjdasbdin2983u1ndsaknn1 , и каждый раз, когда я исправляю его, для каждого href будет новая ссылка. - person Sten Pelzer; 15.05.2014
comment
Я столкнулся с той же проблемой, но похоже (github.com/dalekjs/dalek/issues/3) мы ограничены стандартными селекторами CSS — w3.org/TR/css3 -селекторы/#селекторы - person dmpost; 15.05.2014
comment
спасибо за помощь, теперь я вижу, что на самом деле нет никакого способа сделать это. Надеюсь скоро добавят, будет очень полезно! - person Sten Pelzer; 15.05.2014