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

How to run a function on a page with Capybara/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>

点击链接为:

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

你可以 运行 任意 JS 与 execute_script

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

如果您希望得到 return 值,请使用 evaluate_script - 此处均有记录 - http://www.rubydoc.info/gems/capybara/Capybara/Session#evaluate_script-instance_method

当然,如果你真的在测试一个应用程序,你最好弄清楚为什么点击对你不起作用并修复它,因为仅仅调用 JS 函数你实际上并没有测试它你的应用程序有效。

编辑:打字错误 doSubit 更改为 doSubmit