Javascript casperjs:如何单击远程div,然后更新它';她姓什么?
作为一种学习方式,我尝试在远程页面上的一个div上启动一个click事件,然后在单击该div后更改其类名。想法是找到第一个可单击的div,单击它,然后将其标记为已单击,这样我就可以跳过它转到其他可单击的div。远程页面上div标记的标记如下所示:Javascript casperjs:如何单击远程div,然后更新它';她姓什么?,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,作为一种学习方式,我尝试在远程页面上的一个div上启动一个click事件,然后在单击该div后更改其类名。想法是找到第一个可单击的div,单击它,然后将其标记为已单击,这样我就可以跳过它转到其他可单击的div。远程页面上div标记的标记如下所示: <div class='clickable_div'></div> 它似乎不起作用。首先,我认为我没有正确地启动div上的鼠标单击事件。我错过了什么?其次,当我获取更新的html时,我没有看到div的类名有任何更改。这一步我走
<div class='clickable_div'></div>
它似乎不起作用。首先,我认为我没有正确地启动div上的鼠标单击事件。我错过了什么?其次,当我获取更新的html时,我没有看到div的类名有任何更改。这一步我走错了吗 您正在调用
此。单击评估()
中的,它无法工作,因为评估()
在可能没有窗口的页面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);
});
您可能希望更好地处理错误和边缘情况,但您已经有了主意。您正在调用这个。单击evaluate()
中的,它无法工作,因为evaluate()
在可能没有窗口的页面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);
});
您可能希望更好地处理错误和边缘情况,但您已经明白了