2013-10-09 6 views
0

Это Div с UL на веб-странице.CasperJS - Как нажимать на предоставленный элемент

<div id='sites'> 
    <ul style="display: block;"> 
    <li data-product-id="55"> 
     <a href="#">Test1<br><em class="environment">Production</em></a> 
    </li> 
    <li data-product-id="99"> 
     <a href="#">Test2<br><em class="environment">Production</em></a> 
    </li> 
    <li data-product-id="98"> 
     <a href="#">Test3<br><em class="environment">Production</em></a> 
    </li> 
    <li data-product-id="61"> 
     <a href="#">Test4<br><em class="environment">Production</em></a> 
    </li> 
    <li data-product-id="97"> 
     <a href="#">Test5<br><em class="environment">Production</em></a> 
    </li> 
    <li class="active"> 
     Test6<br><em class="environment">Production</em> <a class="flat button" href="/product_center">Settings</a> 
    </li> 
    </ul> 
</div> 

страница загружается с test6 ул по-умолчанию, и я хочу, чтобы нажать на test5.

Указатель CSS, предоставляемый Firepath, - "#sites>ul>li>a". Поэтому я пробовал это в casperjs:

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: "debug", 
}); 

casper.start('http://localhost:8080', function() { 
    this.echo(this.getTitle()); 
}); 

casper.then(function(){ 
    casper.page.injectJs('jquery.js'); 
    this.evaluate(function(){ 
      $("#sites>ul>li")[4].click(); 
    }); 
    this.capture('screenshot.png'); 
}); 

casper.then(function() { 
    this.echo(this.getTitle()); 
}); 

Заголовок, который появляется всегда на текущей странице. Он должен был нажать на Test5 и отобрал заголовок страницы Test5.

Что я делаю неправильно?

ответ

1

Try #sites .active как селектор

Я сделаю

this.click('#sites .active') вместо

casper.page.injectJs('jquery.js'); 
    this.evaluate(function() 
      { 
      $("#sites>ul>li")[4].click(); 
     }); 

редактировать для комментариев:

попробовать это то

#sites li:nth-child(5) a 
+0

мне нужно нажать на test5. Неактивным является Test6 –

0

квадратная скобка для массива JS возвращает «объект HTMLDivElement»; while .slice() возвращает массив.

Функция click() обычно идет вместе с объектами массива.

Так что ваши коды должны идти:

$("#sites ul li").slice(4,5).click() 
Смежные вопросы