噩梦/电子,如何进行不同的操作取决于元素是否存在?

时间:2017-01-23 16:26:39

标签: node.js electron nightmare

我想使用Nightmare来访问页面,并根据指定的元素是否存在执行不同的操作。我知道有一个exists函数来测试页面上是否存在元素,但我不知道如何使用它或者是否可以在这里使用它。有人能举例说明如何完成这项任务吗?谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

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

nightmare
    .goto("http://stackoverflow.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)
    })