2015-09-01 2 views
0

Я хочу, чтобы имитировать щелчок по элементу на веб-сайте. Веб-сайт содержит список, и каждый элемент расширяем. Элемент, который я хочу щелкнуть, приводит к тому, что список списка расширяется, поэтому его напоминает «показать подробную информацию».Отправить некоторые события на сайт в phantomjs

Во-первых, здесь HTML-код, где определяется кнопка:

<td> 
    <span id="span_details62_0"> 
    <a href="#" onclick="setBusy(&#x27;running-indication&#x27;); 
      render_event_cluster(&#x27;104,105&#x27;, 620); 
      toggle_fe(&#x27;dtlsRow620&#x27;); 
      change(&#x27;span_details62_0&#x27;, &#x27;show&#x27;); 
      Element.update(&#x27;running-indication&#x27;,&#x27;&#x27;);; return false;"><img alt="show | hide" border="0" height="10" src="/images/layout/general/clear.gif?1408570117" title="Show/hide details" width="10" /></a> 
    </span> 
</td> 

Можно ли отправить команды

 render_event_cluster(&#x27;104,105&#x27;, 620); 
     toggle_fe(&#x27;dtlsRow620&#x27;); 
     change(&#x27;span_details62_0&#x27;, &#x27;show&#x27;); 

непосредственно на веб-сайт, что делает его думать, что кнопка щелкнул и результат был показан?

ответ

0

Да, конечно, вы можете с page.evaluate(). Вам нужно будет «декодировать» (&#x27; является HTML объект для ') JavaScript первая:

page.evaluate(function(){ 
    setBusy('running-indication'); 
    render_event_cluster('104,105', 620); 
    toggle_fe('dtlsRow620'); 
    change('span_details62_0', 'show'); 
    Element.update('running-indication',''); 
}); 
+0

Я попробовал, что и на скриншоте впоследствии икона кнопки выглядит так, как будто она нажата, но список НЕ расширяется, поэтому я не вижу больше, чем раньше. Также «620» из render_event_cluster («104, 105», 620); меняется каждый раз, это важно? – Helyx

+0

Это, наверное, имеет значение. Вы должны отлаживать его самостоятельно. Кроме того, вы можете увидеть, есть ли ошибки при этом: зарегистрируйтесь в событиях onConsoleMessage, onError, onResourceError, 'onResourceTimeout' ([Пример] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf)). –

+0

Как зарегистрироваться то, что вы упомянули? Извините, я не очень хорошо знаком с JavaScript/phantomjs – Helyx

0

click method должен работать для вас:

var a = document.getElementById('span_details62_0').getElementsByTagName('a')[0]; 
a.click(); 
+0

Это не работает. a.click не определен. Если я попробую это: \t \t var a = document.getElementById ("span_details62_2"); \t \t var e = document.createEvent ('MouseEvents'); \t \t e.initMouseEvent ('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); \t \t a.dispatchEvent (e); \t \t a.waitforload = true; \t \t e.waitforload = true; он выполняет код, но ничего не происходит – Helyx

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