如何在Capybara/Poltergeist的页面上运行一个函数?

Rim*_*man 6 javascript capybara phantomjs poltergeist

我在<script> ... </script>标签中有一个带JS功能的页面(在鼠标点击时调用).在我测试时,我遇到了.click方法多次无法工作的问题.因此我决定手动调用该函数.但是我发现互联网上没有任何来源可以做到这一点.

我想避免点击链接,只需要求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>
Run Code Online (Sandbox Code Playgroud)

和点击链接是:

 <a href="javascript:doSubmit('11')" >Engine News<br></A>
<a href="javascript:doSubmit('5')" >Parts Identification<br></A>
Run Code Online (Sandbox Code Playgroud)

Tho*_*ole 15

你可以运行任意JS execute_script

page.execute_script("doSubmit('5')")
Run Code Online (Sandbox Code Playgroud)

如果你期望使用返回值evaluate_script- 这里都记录了这一点 - http://www.rubydoc.info/gems/capybara/Capybara/Session#evaluate_script-instance_method

当然,如果你真的正在测试一个应用程序,那么你最好找出为什么click不能为你工作并修复它,因为通过调用JS函数你实际上并没有测试你的应用是否有效.

编辑:错字doSubit更改为doSubmit