我使用了几种攻击方法试图让Casper看到有问题的元素,它通过第二个GET请求加载,返回一堆json以加载到页面的DOM中。
事情是this.waitForResource(url,....)
在大约2秒后执行成功回调(我的超时设置为20),工作正常。
然后我首先尝试了this.click('.class-name')
,然后是this.evaluate(function(){document.getElementsByClassName('.class-name')[0].click()});
点击通过casperJS返回CasperError: Cannot dispatch mousedown event on nonexistent selector: .class-name
,而我不确定DOM操作的作用 - 我的this.on('resource.received',....)
在没有捕获任何内容后立即调用,所以我认为它也没有效果无论是。有时,DOM代码似乎在Casper中无声地失败。
如果通过ajax将元素加载到DOM中,可以选择哪些元素并单击它们来下载文件?
是否有比CasperJS更好的库?
答案 0 :(得分:0)
Casper拥有适合您需求的waitForSelector和waitFor方法。
waitFor
将等到提供的函数返回true
waitForSelector
将等到提供的选择器在DOM中,所以我猜这是你想要使用的那个。
另外还有waitUntilVisible等待元素在屏幕上可见