虽然.type()效果很好,但我无法让nightmareJS点击搜索按钮。 可能是什么问题?
.type('form[action="/search/web/direct_search.php"] [class=_1frb]', string)
.click('form[action="/search/web/direct_search.php"] [type=submit]')
//.click('#js_x > form > button')
//.click('button[class="_42ft _4jy0 _4w98 _4jy3 _517h _51sy"]')
开发人员工具控制台找到按钮:
document.querySelector('form[action="/search/web/direct_search.php"] [type=submit]')
<button value="1" class="_42ft _4jy0 _4w98 _4jy3 _517h _51sy" aria-label="Search" tabindex="-1" data-testid="facebar_search_button" type="submit">…</button>
稍后编辑:
你去,我的朋友,我已经删除了导入并将所有内容放在一个文件中,我已经使用cookie登录了,所以这是复制问题的完整代码:< / p>
var Nightmare = require('nightmare');
var nightmare = Nightmare({
show: true
});
var string = "TEST";
var search = function(string) {
return function(nightmare) {
nightmare
.goto('http://www.facebook.com')
.wait('form[action="/search/web/direct_search.php"] [class=_1frb]')
.type('form[action="/search/web/direct_search.php"] [class=_1frb]', string)
.click('form[action="/search/web/direct_search.php"] [type=submit]')
// .click('#js_x > form > button')
// .click('button[class="_42ft _4jy0 _4w98 _4jy3 _517h _51sy"]')
.wait(2000)
.screenshot('after.png')
.then(function() {
return nightmare
.wait();
})
};
};
nightmare
.useragent('...')
.use(search(string))
答案 0 :(得分:1)
梦魇.type()
发出键盘事件。你可以&#34;按&#34;带有unicode值的返回键,如:.type('selector', '\u000d')
。我在下面提供的示例应该可以正常工作。
var Nightmare = require('nightmare');
var nightmare = Nightmare({
show: true
});
nightmare
.goto("http://www.facebook.com")
.wait('form[action="/search/web/direct_search.php"] [class=_1frb]')
.type('form[action="/search/web/direct_search.php"] [class=_1frb]', "test\u000d")
.catch(function(error) {
console.log(error)
})
通常在Facebook上搜索时,在您输入查询时会打开建议菜单。然后按搜索按钮应立即搜索搜索。但是,如果您观看梦魇的执行,您会看到建议建议菜单在输入时出现故障并关闭(这是电子浏览器的错误)。所以我相信你必须按两次搜索按钮;一旦打开菜单,然后再次实际搜索。
无论哪种方式,发送返回键事件都会更容易和更好。