2016-08-05 2 views
3

У меня есть страница с функциями JS (которые вызывается щелчком мыши) в пределах <script> ... </script> тегов. Во время тестирования я столкнулся с проблемами, когда метод .click не работал много раз. Поэтому я решил просто вызвать эту функцию вручную. Однако я не нашел источника в Интернете, который учил делать это.Как запустить функцию на странице с Capybara/Poltergeist?

Я хочу, чтобы не нажимать на ссылки и просто называть doSumbit('5'). Спасибо!

функции JS являются:

<script language="javascript"> 
function doSubmit(infoTypeId) { 
    document.forms[1].INFOTYPEID.value = infoTypeId; 
    document.forms[1].action = document.forms[1].action + "#" + infoTypeId; 
    document.forms[1].submit(); 
    document.forms[0].INFOTYPEID.value = infoTypeId; 
    document.forms[0].submit(); 
} 
function doSubmitOne(infoTypeId) { 
    document.forms[0].INFOTYPEID.value = infoTypeId; 
    document.forms[0].submit(); 
} 
</script> 

и на клик ссылки:

<a href="javascript:doSubmit('11')" >Engine News<br></A> 
<a href="javascript:doSubmit('5')" >Parts Identification<br></A> 
+0

Вызов функции непосредственно не отличается от вызова нажмите. Должно быть что-то еще, что вызывает эту проблему. Кроме того, я не верю, что вы не обнаружили «источник» в Интернете, который учил это делать ». *. Это довольно распространенная задача, поэтому вы должны улучшить свои навыки поиска и, кроме того, начать читать API, потому что это не очень долго. –

ответ

8

Вы можете запускать произвольные JS с execute_script

page.execute_script("doSubmit('5')") 

если вы ожидаете возвращения стоимость использования evaluate_script - здесь все задокументировано - http://www.rubydoc.info/gems/capybara/Capybara/Session#evaluate_script-instance_method

Конечно, если вы на самом деле тестируете приложение, вам будет намного лучше понять, почему клик не работает для вас и исправляет это, поскольку, просто вызывая функции JS, вы на самом деле не проверяете, что ваш приложения работает.

EDIT: опечатка doSubit изменено на doSubmit

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