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

时间:2017-07-31 12:07:41

标签: selenium phantomjs

我有以下节点路由使用selenium和chrome驱动程序正常工作并在控制台中返回预期的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')
    });

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

问题在于根据用户代理呈现了不同的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();