NightmareJS .click()方法 - 选择器问题

时间:2016-11-20 18:41:29

标签: javascript events dom css-selectors click

虽然.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))

1 个答案:

答案 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上搜索时,在您输入查询时会打开建议菜单。然后按搜索按钮应立即搜索搜索。但是,如果您观看梦魇的执行,您会看到建议建议菜单在输入时出现故障并关闭(这是电子浏览器的错误)。所以我相信你必须按两次搜索按钮;一旦打开菜单,然后再次实际搜索。

无论哪种方式,发送返回键事件都会更容易和更好。