gpt4 book ai didi

javascript - CasperJS click() 不加载新的 html

转载 作者:太空狗 更新时间:2023-10-29 15:49:59 26 4
gpt4 key购买 nike

我正在尝试使用 CasperJS 的 click() 来跟踪在当前屏幕上生成模态的链接。当我查询正确的选择器并使用 document.querySelector().click() 在浏览器控制台中单击它时,它起作用了,但即使我 casper.evaluate() 这它不起作用。我发现有人遇到了非常相似的问题,但他的问题仍未得到解答,而我遇到的问题几乎相同。 casperjs button click doesn't navigate to next page我目前使用的代码是

this.waitForSelector('div.talk-sharing__tools a.rate-button', function() {
this.then(function() {
this.evaluate(function() {
document.querySelector('a.rate-button').click();
});

我要抓取的页面是 http://www.ted.com/talks/uri_alon_why_truly_innovative_science_demands_a_leap_into_the_unknown

最佳答案

用 phantomjs 引擎做那些导航步骤真的是不可能的。似乎 phantom 的 QtWebkit 分支(版本 1.9.7)不再能胜任这项任务。尽管您的代码在 slimerjs 中原样工作正常。您可以通过 npm 轻松安装 slimerjs:

npm install -g slimerjs

并运行你的脚本

casperjs --engine=slimerjs script.js

我用 phantomjs 尝试了一些不起作用的东西。我为 remote.messageresource.error 添加了 casper.on 监听器,但是在 phantom 中运行脚本时没有显示任何错误. logLevel: "debug" 也没有显示任何内容。

首先:使用 casperjs 函数。

casper.thenClick("div.talk-sharing__tools a.rate-button");

其次:尝试显式显示按钮的模式(特定于页面)。

casper.then(function(){
var name = this.evaluate(function(){
var modal = document.querySelectorAll(".modal-wrapper > .modal")[0];
modal.className += " modal--show";
return modal.className;
});
this.echo("name: "+name); // null
});

casper.waitUntilVisible(".modal__head__title");

第三:让 jQuery 完成工作。

var casper = require('casper').create({
remoteScripts: [ "http://code.jquery.com/jquery-1.11.1.min.js" ]
});

casper.waitForSelector(selector, function() {
this.evaluate(function() {
jQuery("a.rate-button").click();
});
});

关于javascript - CasperJS click() 不加载新的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24197587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com