我试图在页面完全加载后点击图片链接。图片链接嵌套在div标签中,如下所示
<section id="A">
<div class="B">
<div>
<div>
<a href="url" class="C">
<img src="http://www.example.com/xyz.jpg">
</a>
</div>
</div>
</div>
</section>
我正在尝试加载图片链接并将其内容写入文本文件,但它不能使用下面给出的代码
var fs = require('fs');
var casper = require('casper').create();
casper.start('http://www.example.com/');
var selector = "A > a:first-child";
casper.waitUntilVisible(selector)
.thenClick(selector)
.wait(10000)
.waitTimeout = 90000
.then(function(){
fs.write('myfile.txt', this.getHTML(), 'w');
});
casper.run();
答案 0 :(得分:1)
x > y
表示由y
匹配的元素是由x
匹配的元素的子元素。 A
中的A > a:first-child
不是基于您的标记的有效选择器。我怀疑您要使用A
的{{1}},但#A > a:first-child
不是a
的孩子。
您需要使用后代操作(这是一个空格):#A
或完全限定选择器:#A a:first-child
。请注意,#A > div.B > div > div > a:first-child
并不关心元素的类型,因此如果:first-child
不是它的父元素的第一个元素,那么这不会匹配任何内容。您可以使用a
。
此外,此代码将产生TypeError,因为a:first-of-type
不是数字(then
)上的函数。以这种方式设置属性时,您无法链接某些内容。您必须在90000
函数或回调开始之前或之内设置waitTimeout
。
尝试:
then