2014-07-21 3 views
0

jQuery와 casperjs를 사용하여 DOM에서 검색된 요소를 클릭하려고합니다.casperjs의 evaluate 함수와 jQuery를 사용하여 요소를 클릭하십시오.

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(); 
     }); 
    }); 
)}; 

나는, 요소 JQuery와 선택 정확히 볼 수

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

을 사용하고 올바른 하나를 선택했다 (I는 웹 페이지에 무슨 일이 일어나고 있는지 볼 캡처()를 사용했다). 파이어 폭스의 firebug 개발 도구에 대한 코드를 시험해 보았지만 정상적으로 작동하지만 클릭 기능을 전혀 사용할 수 없습니다.

+0

와 함께이 사용의 XPath의 일부를 수행 ['remote.message'] (http://docs.casperjs.org/en/latest/events-filters. html # remote-message) 및 ['page.error'] (http://docs.casperjs.org/en/latest/events-filters.html#page-error) 이벤트를 참조하십시오. 어쩌면 오류가있을 수 있습니다. 바인드가 문제가되면 [shim] (https://github.com/ariya/phantomjs/issues/10522#issuecomment-39248521)이 필요합니다. –

+0

알았어요. 그들에게 들여다 봐. – Miller

+0

그래서 이걸 들여다 보았습니다. Error : TypeError : '정의되지 않은'함수가 아닙니다 ('$ (element) [0] .click()'을 평가 중임) 왜 이것이 일어나고 있는지. – Miller

답변

0

여러 가지를 시도해 볼 수 있습니다. onlick 전화를 사용 onlick

element[0].onclick(); 
  • 를 사용하여 JQuery와 click

    element.click(); 
    
  • 를 사용

    1. element[0].onclick.call(element[0]); 
      
    2. 는에 등록하십시오 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')]]")); 
      
  • +0

    답장을 보내 주셔서 감사합니다. 귀하의 제안을 시도했지만 아무 소용이 없습니다. 당신이 제공 한 XPath는 그 요소를 찾을 수 없지만, 그 XPath를 더 자세히 살펴보십시오. 새로운 XPATH. – Miller

    관련 문제