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

时间:2016-08-05 06:13:04

标签: javascript phantomjs 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>

1 个答案:

答案 0 :(得分:14)

您可以使用execute_script

运行任意JS
page.execute_script("doSubmit('5')")

如果您希望返回值使用evaluate_script,则会在此处记录 - http://www.rubydoc.info/gems/capybara/Capybara/Session#evaluate_script-instance_method

当然,如果您真的正在测试某个应用,那么您最好找出点击为什么不能为您工作并解决这个问题,因为只需调用JS函数即可#39 ;实际上并没有测试你的应用是否有效。

编辑:错字doSubit更改为doSubmit