【问题标题】:Selenium Webdriver: HTML renders differently for Firefox vs. PhantomJSSelenium Webdriver:Firefox 与 PhantomJS 的 HTML 呈现方式不同
【发布时间】:2016-01-31 03:55:05
【问题描述】:

我在 Node JS 中使用 Selenium Webdriver 进行 Google 搜索。当我在本地机器上将浏览器设置为 Firefox 时,Google 结果页面按预期呈现;这与我以人类身份进行 Google 搜索时看到的情况相同。

现在,我正尝试在我的 Heroku 服务器上做同样的事情。我似乎无法在服务器上安装 Firefox,所以我使用的是 PhantomJS。它成功地进行了谷歌搜索,但页面中缺少一些数据(我认为它是稍后由 Javascript 添加的)。

如何使 PhantomJS 结果页面看起来与 Firefox 相同?我可以让 PhantomJS 看起来像 Firefox 吗?

var driver = new webdriver.Builder().forBrowser('phantomjs').build();

driver.get('http://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('empire boston');
driver.findElement(By.name('btnG')).click();
driver.wait(until.titleIs('empire boston - Google Search'), 10000);

driver.getTitle().then(function(title) {
    console.log('Page title is: ' + title);
});

driver.getPageSource().then(function(html) {
    console.log("HTML: " + html);
});

【问题讨论】:

    标签: node.js firefox heroku selenium-webdriver phantomjs


    【解决方案1】:

    一个快速的胜利是均衡你的窗口尺寸,因为默认情况下 PhantomJS 似乎更喜欢高条而不是像样的矩形。

    PhantomJS 使用WebKit 进行渲染,而Firefox 使用Gecko,因此存在细微差别的可能性。

    不同的 PhantomJS 版本也是针对不同的 WebKit 版本构建的。 Apparently PhantomJS 2.x 使用 WebKit 538.x,这使它成为 equivalent to Safari 7 or 8。相比之下,我目前的 PhantomJS 1.9.8 usesWebKit 534.34,相当于 Safari 5。

    Google 将 Safari 5 确定为“旧”浏览器,因此可能会render its search pages differently。 (我认为 JavaScript 不太可能无法运行 - 除非您明确禁用它。)

    因此升级到 PhantomJS 2.x 无疑会减少与 Firefox 的渲染差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-28
      • 2023-03-14
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多