在节点中使用 Selenium 和 Phantomjs 不返回结果



我有以下使用硒和铬驱动程序的节点路由,该路由工作正常并在控制台中返回预期的html:

app.get('/google', function (req, res) {
var driver = new webdriver
.Builder()
.forBrowser('chrome')
.build();
driver.get('https://www.google.com')
driver
.manage()
.window()
.setSize(1200, 1024);
driver.wait(webdriver.until.elementLocated({xpath: '//*[@id="lst-ib"]'}));
return driver
.findElement({xpath: '//*[@id="lst-ib"]'})
.sendKeys('stackoverflow' + webdriver.Key.RETURN)
.then((html) => {
return driver
.findElement({xpath: '//*[@id="rso"]/div[1]/div/div/div/div'})
.getAttribute("innerHTML")
})
.then((result) => {
console.log(result)
})
.then(() => {
res
.status(200)
.send('ok')
});

我还安装了 phantom js 驱动程序,并通过返回 URL 标题来测试它是否正常工作 - 它可以工作。当我使用上述确切路线并将 chrome 替换为 phantomjs 时,我没有得到任何结果。没有错误 - 只是在我的控制台中没有打印出来。状态和结果永远不会发送到浏览器,因此它似乎没有通过承诺链。

有什么建议吗?

问题是根据用户代理呈现不同的 html。通过强制用户代理,我能够检索我需要的结果。 这是上面替换的代码片段,以使其正常工作。

.Builder()
// .forBrowser('phantomjs')
.withCapabilities(webdriver.Capabilities.phantomjs()
.set("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"))
.build();

相关内容

  • 没有找到相关文章

最新更新