我正在使用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>
答案 0 :(得分:0)
clickLabel
在您的情况下使用click
的XPath选择器调用//*[text()='Submit']
。 click
反过来会尝试使用提交文本在mousefown
上发送click
和span
个事件。但是跨度上没有任何此类事件处理程序,因为这是父链接的用途。上面的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']/.."));