【问题标题】:Casper.js/Phantom.js not submitting dataCasperjs/Phantomjs 不提交数据
【发布时间】:2014-08-07 15:37:24
【问题描述】:

我正在使用 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>

【问题讨论】:

  • 您是否真的尝试过使用fillfillSelectors 并设置提交标志?在我的测试中,提交处理程序运行。请显示表单标记。如果提交按钮是input 元素,那么您将不得不click 它。
  • 不会“填写”只是提交表单而不是执行 onclick 回调?
  • 不,它不会运行onclick 处理程序,而只会运行表单的onsubmit 处理程序。与填写表格并按 Enter 的方式相同。如果你真的想点击标签,那么你应该提供标签的必要标记clickLabel 的功能非常有限,因此可能存在问题。
  • 为问题添加了标签标记

标签: forms phantomjs casperjs


【解决方案1】:

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

你需要点击实际的链接来触发动作:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 2023-04-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多