Casperjs / Phantomjs没有提交数据

时间:2014-08-07 15:37:24

标签: forms phantomjs casperjs

我正在使用Casper.js自动提交表单。表单的onSubmit方法返回false并在发送数据之前运行一些javascript(onclick回调),因此我必须使用clickLabel而不是fill。数据已预先填充,我只需单击“提交”按钮即可。当我使用Casper执行clickLabel('Submit')时,不会提交数据。我做错了什么?

编辑 - 这是标签的标记:

<a class="green_btn white font_18 arrow_btn_pad rad_5" onclick="$.shactivity.eoiPremiumSubmit('expressval');return false;" href="javascript:void(0);">
<span class="fl cursor_p">Submit</span>
<span class="white_right_arrow mar_l_7 block fl mar_t_6 cursor_p"></span>
</a>

1 个答案:

答案 0 :(得分:0)

clickLabel在您的情况下使用click的XPath选择器调用//*[text()='Submit']click反过来会尝试使用提交文本在mousefown上发送clickspan个事件。但是跨度上没有任何此类事件处理程序,因为这是父链接的用途。上面的XPath选择器不会选择实际的链接,它是span元素的父级。

您需要点击实际链接才能触发操作:

casper.click(".green_btn.white.font_18.arrow_btn_pad.rad_5");

使用XPath表达式根据文本选择父级:

var x = require('casper').selectXPath;
casper.click(x("//*[text()='Submit']/.."));