【问题标题】:Submitting a form on casperjs that has no name在没有名称的 casperjs 上提交表单
【发布时间】:2014-09-11 15:06:46
【问题描述】:
这是我要提交的表单
<form action="https://www.example.com/account/registration?execution=e2s1" method="post" novalidate="novalidate">
在casperjs的文档中的示例代码中,提交表单是通过这个:
document.querySelector('form[name="f"]').submit();
如果未指定名称属性,我将如何提交表单?
【问题讨论】:
标签:
javascript
css-selectors
casperjs
selectors-api
【解决方案1】:
您需要使用一些 CSS3 选择器或 XPath 选择器来执行此操作。例如,当您打开 Chrome 开发人员工具并右键单击某个元素时,您可以选择复制 CSS 路径 和 复制 XPath。 CSS 选择器可以与 querySelector 一起使用,但 XPath 选择器只能与页面上下文中的 evaluate 一起使用。
那些复制的选择器会非常僵化,因为它们只能通过使用元素树来工作。您可以选择带有CSS attribute selector 的表单:
document.querySelector('form[action*="account/registration?execution=e2s1"]').submit();
这里我使用*=,因为您可能不希望在选择器中包含域,并且协议 (https) 可能稍后会更改。
如果你只有一个表格,你可以使用
document.querySelector('form').submit();
或者如果您只有一个具有novalidate 属性的表单,您可以使用
document.querySelector('form[novalidate]').submit();