我试图点击' 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
的元素?
感谢。
答案 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选择器来直接找到你的元素。
所以你可以这样做:
nightmare
.goto(page)
.click(".btn[value='select1']:nth-of-type(2)")
.doStuff....
所有这一切都假设您有两个值为select1
的元素,并且想要点击第二个元素,如果您的第二个元素实际上是值select2
,那么这将起作用:
nightmare
.goto(page)
.click(".btn[value='select2']")
.doStuff....