2015-04-13 5 views
1

У меня возникли проблемы с CasperJS. Я загружаю страницу для нашего сайта, а затем пытаюсь нажать кнопку регистрации. Он должен открыть модальный, но ничего не происходит. Он работает в реальных браузерах, и очень похожая функциональность работает в других тестах на других страницах.CasperJS клик не стрелять клик событие

Что я могу делать неправильно? Что еще поможет вам, более широкий интернет, помочь мне?

casperjs --version: 1.1.0-Beta3
phantomjs --version: 1.9.7

Casper тест сниппет:

casper.then(function() { 
    casper.open(DOMAIN); 

}); 

// wait added for debugging. 
casper.then(function() { 
     casper.wait(2500); 
}); 

// many different ways of trying to click and debug: 
casper.then(function() { 
    casper.click('[data-js="company-search-view-jobs-button-reg"]'); 
    var x = casper.evaluate(function() { 
     var f = $("[data-js='company-search-view-jobs-button-reg']"); 
     f.click(); 
     var q = document.getElementById("foo"); 
     q.click(); 
     $('#foo').click(); 
     return $("[data-js='company-search-view-jobs-button-reg']")[0].innerHTML; 

    }); 

// this prints the expected text, so it is definitely on the right page. 
    casper.echo(x); 
}); 

//waiting in case it was slow for some reason 
casper.then(function() { 
    casper.wait(2500); 
}); 

// takes a screenshot. uses casper.capture under the hood. 
casper.then(function() { 
    util.screenshot("fff", SCREENSHOT_OPTIONS); 

}); 

От JS с обработчик щелчка:

var $companySearchViewJobsBtnNeedReg = $("[data-js=company-search-view-jobs-button-reg]"); 
[...] 
$companySearchViewJobsBtnNeedReg.on("click", function(e) { 
    e.preventDefault(); 
[library code for opening the modal] 

HTML на странице:

<div class="columns xlarge-8"> 
    <div class="company-basic-info__logo left"> 
     <img class="company-basic-info__logo-img" src="/images/logo_placeholder.png" alt="[Standard Values] logo"> 
    </div> 
    <div class="header-container"> 
     <h1>Standard Values</h1> 

     <button class="company-basic-info__view-jobs-button" data-cta="viewOpenJobsForCompany" data-js="company-search-view-jobs-button-reg" href="https://[internal url not really important for the question]">Sign Up</button> 
    </div> 
    <div class="company-basic-info__description"> 
     <div class="company-basic-info__description-text" data-attr="expandable">Lorem ipsum dolor sit amet, inani labores eligendi ex cum, labitur equidem recteque eam eu. Ignota semper mentitum ad vim, aperiam volumus iracundia ne mea, eu eros movet mel. Sed ea natum elaboraret. Mel modus aliquid reformidans ei, postea putent splendide an eum. 
     Sanctus indoctum mea id, feugiat placerat mei ea. An scripta epicurei theophrastus has, vis eu illud principes moderatius. Facer velit sed ei, atqui dicta ornatus ea vix, nec soluta populo ei. Quis laudem nec cu, sed viderer theophrastus id. 
     </div> 
     <div class="company-basic-info__description-expander" data-attr="expander" style="display: block;"> 
     </div> 
    </div> 
</div> 
+1

Пожалуйста, зарегистрируйтесь на ['resource.error'] (http://docs.casperjs.org/ru/latest/events-filters.html#resource-error), [' page.error'] (http: //docs.casperjs.org/en/latest/events-filters.html#page-error), ['remote.message'] (http://docs.casperjs.org/en/latest/events-filters.html # remote-message) и событий ['casper.page.onResourceTimeout'] (http://phantomjs.org/api/webpage/handler/on-resource-timeout.html). Возможно, есть ошибки. –

+0

Чтобы быть ясным: ни один из этих методов кликов не работает, и на скриншоте не отображается модальный? Does 'casper.exists ('[data-js =" company-search-view-jobs-button-reg "]')' return true? Обратите внимание, что Каспер (возможно) не использует тот же механизм выбора DOM, что и jQuery, поэтому jQuery, дающий вам правильный элемент, не гарантирует, что Каспер может найти его с тем же селектором. – nrabinowitz

+0

благодарит за комментарии. случайно отправлено .. редактирование ..
casper.exists ('[data-js = "company-search-view-jobs-button-reg"]') возвращает true.
добавление этих прослушивателей событий, я вижу "error: TypeError: 'undefined' не является функцией (оценка this.hideOnClickAway.bind (this) ')", которая выглядит многообещающей. Я не вижу ошибки на консоли хром, и я не уверен, почему это происходит при загрузке страницы. –

ответ

0

В моем случае проблема была эта линия

casper.options.remoteScripts.push 'http://code.jquery.com/jquery-2.1.4.min.js' 

casperjs Jquery инъекции перезаписан в addEventListeners, чтобы они не работали. Удалите эту строку и проверьте, работает ли она. Измените свой код, чтобы использовать простой javascript вместо Jquery lib.

Смежные вопросы