这是网页上带有UL的Div。
<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 ul ,我想点击 Test5 。
Firepath提供的CSS定位器为"#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页面的标题。
我做错了什么?
答案 0 :(得分:2)
尝试#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
答案 1 :(得分:1)
JS数组的方括号返回&#34;对象HTMLDivElement&#34 ;;而.slice()返回数组。
click()函数通常与数组对象一起出现。
所以你的代码应该转到:
$("#sites ul li").slice(4,5).click()