nightmare/electron,如何根据元素是否存在进行不同的操作?

nightmare/electron, how to carry out different operations depend on whether an element exists?

我想用Nightmare访问一个页面,根据指定元素是否存在做不同的操作。我知道有一个exists函数可以检测页面上是否存在一个元素,但是不知道怎么用,也不知道这里能不能用。有人可以给我一个关于如何完成这项任务的例子吗?谢谢!

Nightmare 是可行的,所以如果你想使用 exists() 函数的 return 值作为逻辑,你可以使用 .then() 进行方法链接。这也适用于 visible()evaluate() 或任何函数 returning 值。

如果搜索框选择器存在,我提供的示例会搜索 Whosebug,然后转到 Google、return 标题,然后有条件地记录结果。您可以根据需要继续链接逻辑。

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });  

nightmare
    .goto("http://whosebug.com")
    .exists("#search input[type=text]")
    .then(function (result) {
        if (result) {
            return nightmare.type("#search input[type=text]", "javascript\u000d")
        } else {
            console.log("Could not find selector")
        }
    })
    .then(function() {
        return nightmare
            .goto("http://www.google.com")
            .wait(1000)
            .title()
    })
    .then(function (title) {
        if (title == "Google") {
            console.log("title is Google")
        } else {
            console.log("title is not Google")
        }

        return nightmare.end()
    })
    .catch(function (error) {
        console.log(error)
    })