gpt4 book ai didi

javascript - casperjs:如何单击远程 div,然后更新其类名?

转载 作者:行者123 更新时间:2023-11-28 16:07:34 26 4
gpt4 key购买 nike

作为一种学习方式CasperJS ,我试图在远程页面上的 div 上启动单击事件,然后在单击后更改 div 的类名称。这个想法是找到第一个可点击的 div,点击它,然后将其标记为已点击,这样我就可以跳过它到其他可点击的 div。远程页面上 div 标签的标记如下所示:

<div class='clickable_div'></div>

我尝试了以下 casperjs 代码:

...
casper.then(function() {
if( this.exists( 'div.clickable_div' ) ) {
this.evaluate(function() {
this.click(document.querySelector('div.clickable_div'));
return document.querySelector('div.clickable_div').setAttribute("className","clicked");
});
}
});
...

这似乎不起作用。首先,我认为我没有正确启动 div 上的鼠标单击事件。我缺少什么?其次,当我获取更新后的 html 时,我没有看到 div 的类名有任何变化。我是否以错误的方式执行这一步?

最佳答案

您在 evaluate() 中调用 this.click,它无法工作,因为 evaluate() 在可能没有 window.click 方法的页面 DOM 上下文。

这是一个可能有效的脚本:

var linkSelector = 'div.clickable_div';

casper.then(function() {
if (!this.exists(linkSelector)) return;
this.click(linkSelector);
this.evaluate(function(linkSelector) {
__utils__.findOne(linkSelector).setAttribute("className", "clicked");
}, linkSelector);
});

您可能希望更好地处理错误和边缘情况,但您已经明白了。

关于javascript - casperjs:如何单击远程 div,然后更新其类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14270861/

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