0

我正在尝试单击“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>

我想点击'select2'。

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

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

如何点击元素.select2

谢谢。

4

2 回答 2

2

“如何单击 .select2 的元素?”

$(".btn[value='select2']").click();
于 2016-06-07T07:32:34.680 回答
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()fromnightmare本身,那就更复杂了,你必须找到精确的 css 选择器才能直接找到你的元素。

幸运的是,这在 CSS3 中是可能的

所以你可以这样做:

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

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

nightmare
   .goto(page)
   .click(".btn[value='select2']")
   .doStuff....
于 2016-06-10T13:46:18.290 回答