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