2015-01-09 6 views
0

У меня проблема с Xpath.Xpath CasperJS, взять последний элемент

У меня есть что:

<ul unselectable="on" class="k-list k-reset" tabindex="-1" role="listbox" aria-hidden="true" id="1 (fix but random)" aria-live="off" style="overflow: auto;"> 
<li tabindex="-1" role="option" unselectable="on" class="k-item"></li> 
<li tabindex="-1" role="option" unselectable="on" class="k-item">standard 2014</li> 
<li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" id="1 (fix but random)__PackageId_option_selected" aria-selected="true">standard couple 2014</li><li tabindex="-1" role="option" unselectable="on" class="k-item">Gratuit</li> 
</ul> 

<ul unselectable="on" class="k-list k-reset" tabindex="-1" role="listbox" aria-hidden="true" id="2 (fix but random)" aria-live="off" style="overflow: auto;"> 
<li tabindex="-1" role="option" unselectable="on" class="k-item"></li> 
<li tabindex="-1" role="option" unselectable="on" class="k-item">standard 2014</li> 
<li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" id="1 (fix but random)__PackageId_option_selected" aria-selected="true">standard couple 2014</li><li tabindex="-1" role="option" unselectable="on" class="k-item">Gratuit</li> 
</ul> 

<ul unselectable="on" class="k-list k-reset" tabindex="-1" role="listbox" aria-hidden="true" id="RANDOM" aria-live="off" style="overflow: auto;"> 
<li tabindex="-1" role="option" unselectable="on" class="k-item"></li> 
<li tabindex="-1" role="option" unselectable="on" class="k-item">standard 2014</li> 
<li tabindex="-1" role="option" unselectable="on" class="k-item k-state-selected k-state-focused" id="1 RANDOM__PackageId_option_selected" aria-selected="true">standard couple 2014</li><li tabindex="-1" role="option" unselectable="on" class="k-item">Gratuit</li> 
</ul> 

Мой вопрос прост: как я нажимаю с Каспером на последнем < li> со стандартным 2014? Стараюсь что:

var x = require('casper').selectXPath; 
this.click(x('//*ul[@class="k-list k-reset"]/li[text() = "standard 2014"]')) 

Но casperjs не найти. Спасибо за помощь!

+1

Я не использовал casperjs, но ваш xpath выглядит недействительным; в частности '// * ul'. Попробуйте удалить звездочку. –

+0

Да ty @DanielHaley, но casper кликнуть на мой первый li :( Для последнего нажмите i() this.click (x ('// li [текст() = "Gratuit" и last() ] ')); Но сначала я тоже нажимаю. Спасибо за вашу помощь – Manolel

ответ

1

Попробуйте окружить xpath в круглых скобках и добавьте [last()] до конца. Как (xpath)[last()]

Вы также должны удалить звездочку из //*ul

Он должен выглядеть следующим образом:

this.click(x('(//ul[@class="k-list k-reset"]/li[text() = "standard 2014"])[last()]')) 
+0

you roxxx ty =) – Manolel

0

Вы должны попытаться проверить, является ли или нет в консоли браузера ваш X-путь. например

$x('//a[contains(text(),"Cancel")]') 
Смежные вопросы