梦魇。点击事件onclick

时间:2016-06-07 07:23:35

标签: javascript jquery node.js nightmare

我试图点击' onclick'元件。目标网站的来源是

    <td class="td-03">
        <p class="td-03">hogehoge</p>
    </td>
    <td class="td-04">
        <p class="td-04">
            <input class="btn btn-sm btn-success" onclick="this.form.f_comp_no.value=117111;this.form.f_acnt_no.value=431174;" type="submit" value="select1">
        </p>
    </td>
</tr>
<tr>
    <td class="td-01">
        <p class="td-01">2</p>
    </td>
    <td class="td-02">
        <p class="td-02">162343</p>
    </td>
    <td class="td-03">
        <p class="td-03">foofoo</p>
    </td>
    <td class="td-04">
        <p class="td-04">
            <input class="btn btn-sm btn-success" onclick="this.form.f_comp_no.value=11143;this.form.f_acnt_no.value=423271;" type="submit" value="select2">
        </p>
    </td>
</tr>

我想点击“选择2&#39;。

我试过这个,但它不起作用:

.click('[input[onclick=this.form.f_comp_no.value=11143;this.form.f_acnt_no.value=423271;]')

如何点击.select2的元素?

感谢。

2 个答案:

答案 0 :(得分:2)

&#34;如何点击.select2的元素?&#34;

async/await

答案 1 :(得分:1)

一个(显而易见的)事情:

代码可以在evaluate()内:

nightmare
   .goto(page)
   .evaluate( () => {
       /* Inside browser context, no access to variables from the nodejs
          program unless they are passed as an argument */
       /* using jQuery if it's loaded in the page */
       $(".btn[value='select1']")[1].click();
       /* using native JS api */
       document.querySelectorAll("input[value='select1']")[1].click();
       /* In both cases the [1] refers to the second element matching the css
          selector */

       /* If returning a value here, will be the parameter of the callback
          function of the next .then() */
   }).doStuff....

查看evaluate()的文档:如何向其传递参数,如何从中获取值。

如果你想从click()本身做nightmare,那就更复杂了,你必须找到精确的css选择器来直接找到你的元素。

幸运的是this is possible in CSS3

所以你可以这样做:

nightmare
   .goto(page)
   .click(".btn[value='select1']:nth-of-type(2)")
   .doStuff....

所有这一切都假设您有两个值为select1的元素,并且想要点击第二个元素,如果您的第二个元素实际上是值select2,那么这将起作用:

nightmare
   .goto(page)
   .click(".btn[value='select2']")
   .doStuff....