PhantomJS/SlimerJS 没有通过 document.querySelector() 找到元素
PhantomJS/SlimerJS don't find elements through document.querySelector()
出于某种原因,querySelector 和 get element by class 在存在的元素上返回 null。
PhantomJS/SlimerJS
page.open('file:///Users/yeahsame/Desktop/index.html', function(status)
{
console.log("Starting execution");
document.querySelector("input")[0].value = "not working whatsoever";
phantom.exit();
});
HTML:
<!doctype html>
<body>
<input class="form-control email input-lg"></input>
<button class="btn" onclick="location.href='notexist.html'">submit</button>
</body>
运行 在 slimerjs 中 returns "document.querySelector(...) is null"
PhantomJS/SlimerJS 有两个上下文。内页 (DOM) 上下文只能通过沙盒 page.evaluate()
函数访问。在它之外存在一个 document
对象,但它无权访问页面 DOM.
page.open('file:///Users/yeahsame/Desktop/index.html', function(status)
{
console.log("Starting execution");
page.evaluate(function(selector, value){
document.querySelector(selector)[0].value = value;
}, "input", "not working whatsoever");
page.render("screenshot.png");
phantom.exit();
});
page.evaluate()
内的代码无法访问外部定义的变量,因此必须显式传入值。
出于某种原因,querySelector 和 get element by class 在存在的元素上返回 null。
PhantomJS/SlimerJS
page.open('file:///Users/yeahsame/Desktop/index.html', function(status)
{
console.log("Starting execution");
document.querySelector("input")[0].value = "not working whatsoever";
phantom.exit();
});
HTML:
<!doctype html>
<body>
<input class="form-control email input-lg"></input>
<button class="btn" onclick="location.href='notexist.html'">submit</button>
</body>
运行 在 slimerjs 中 returns "document.querySelector(...) is null"
PhantomJS/SlimerJS 有两个上下文。内页 (DOM) 上下文只能通过沙盒 page.evaluate()
函数访问。在它之外存在一个 document
对象,但它无权访问页面 DOM.
page.open('file:///Users/yeahsame/Desktop/index.html', function(status)
{
console.log("Starting execution");
page.evaluate(function(selector, value){
document.querySelector(selector)[0].value = value;
}, "input", "not working whatsoever");
page.render("screenshot.png");
phantom.exit();
});
page.evaluate()
内的代码无法访问外部定义的变量,因此必须显式传入值。