普通和无头浏览器之间的区别

时间:2015-10-13 08:53:32

标签: browser selenium-webdriver headless-browser

我经常会见PhantomJS to run headless browserheadless browser

普通(用户调用或调用的常规Selenium webdriver代码)与无头浏览器之间的区别是什么?

除此之外,我还想清楚地了解这些浏览器功能:

  • 标题
  • 本地存储
  • 饼干

1 个答案:

答案 0 :(得分:2)

根据定义,无头浏览器是没有图形用户界面(GUI)的Web浏览器。

通常情况下,使用带有GUI的浏览器通过鼠标和键盘完成与网站的交互,而大多数无头浏览器提供操作页面/ DOM,下载资源等的API。因此,而不是,例如,实际点击使用鼠标元素,无头浏览器允许您按代码单击元素。

使用PhantomJS与页面交互的示例:

    page.evaluate(function() {
        //Fill in form on page
        document.getElementById('Name').value = 'John Doe'; 
        document.getElementById('Email').value = 'john.doe@john.doe';
        //Submit
        $('#SubmitButton').click();
    });

标题,本地存储和Cookie在大多数无头浏览器中的工作方式与在具有GUI的常规浏览器中的实现方式相同。 PhantomJS和HtmlUnit支持所有这些功能。

在PhantomJS中,您还可以添加自己的Cookie。例如,您可以从chrome复制cookie,并在运行时以编程方式将其添加到phantomjs浏览器中。它将自动添加到特定域的页面请求中。

在加载之前向页面添加Cookie

var webPage = require('webpage');
var page = webPage.create();

phantom.addCookie({
  'name'     : 'Valid-Cookie-Name',   /* required property */
  'value'    : 'Valid-Cookie-Value',  /* required property */
  'domain'   : 'localhost',
  'path'     : '/',                /* required property */
  'httponly' : false,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
});
page.open('localhost', function (status) {
//Cookie automatically added to request headers for localhost
...
});

对于使用PhantomJS的一些可运行示例,请参阅The phantomjs examples page