【问题标题】:Clicking an element using casperjs's evaluate function and jQuery使用 casperjs 的评估函数和 jQuery 单击元素
【发布时间】:2014-07-21 20:35:18
【问题描述】:

我正在尝试使用 jQuery 和 casperjs 来单击从 DOM 中检索到的元素。

casper.options.clientScripts = ["jquery-1.11.1.min.js"];
...
...
casper.then(function()
{   
    this.wait(2000,function()
    {
        this.evaluate(function()
        {

        var element = $('h4:contains("test")').prev().find('.delete');
        $(element).css("background-color", "red");

        $(element)[0].click();
        });
     });
)};

我用过

$(element).css("background-color", "red");

要查看 jquery 正在选择的确切元素,(我使用 capture() 来查看网页上发生了什么)并且它选择了正确的元素。 我已经在 Firefox 的 firebug 开发工具上尝试了我的代码,它工作正常,但我根本无法让点击功能工作。

【问题讨论】:

  • 请注册remote.messagepage.error 活动。也许有错误。如果绑定是一个问题,您需要一个shim
  • 好的,我会调查他们
  • 所以我查看了这个并得到了错误:TypeError: 'undefined' is not a function (evalating '$(element)[0].click()') 我不完全确定为什么会这样不过正在发生。
  • 是否试图点击谷歌网站上的按钮?如果没有,请发布缩写标记。如果是,这可能永远不会奏效。您是否看到我建议的方法有错误。请尝试所有这些并写下所有这些发生的事情。
  • 我得到的唯一错误仍然是 $(element)[0].click();未定义。它不是谷歌网站。

标签: jquery casperjs evaluate


【解决方案1】:

你可以尝试多种方法。

  1. 使用 jquery click

    element.click();
    
  2. 使用onlick

    element[0].onclick();
    
  3. 使用onlick 调用

    element[0].onclick.call(element[0]);
    
  4. 使用 XPath 和 casper.click 完成其中的一部分

    var x = require('casper').selectXPath;
    this.evaluate(function(){
        var $element = $('h4:contains("test")').prev().find('.delete');
        $element.css("background-color", "red");
    });
    this.click(x("//h4[contains(.,'test')/preceeding-sibling::*[1]//*[contains(@class,'delete')]]"));
    

【讨论】:

  • 感谢您的回复,我尝试了您的建议,但无济于事。您提供的 XPath 找不到该元素,但我会进一步调查。我是 XPATH 的新手。
猜你喜欢
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多