About Me

My name is Marc Guillemot. I’m a French software contractor living near to Bonn (Germany). I specialize in JSE and JEE development, and in test automation of web applications.

I’m very involved in a variety of open source projects. I am currently the lead developer of the HtmlUnit and Canoo WebTest projects as well as commiter of NekoHtml and a (not so active) Groovy committer.

Please contact me directly per email to mguillemot@yahoo.fr if you’re interested in getting first class support for one of the above mentioned open source tools or, more generally, for Java development or test automation.

For questions concerning HtmlUnit, WebTest, NekoHTML or Groovy, please post to the corresponding mailing list.


  1. gerard walsh said,

    March 21, 2008 at 3:34 am

    hello marc sorry for bothering you with something trivial but i googled in my date of birth and discovered we both came into the world on the same day! dont know anything about you but it looks like you do interesting stuff ! anyway good luck from ireland. always said 59 was a vintage year !!!

  2. Marc Guillemot said,

    March 28, 2008 at 3:26 pm

    Bad guess, this is not 59… but I have nothing against such an old wine bottle 😉

  3. Madhuri said,

    March 28, 2008 at 11:57 pm

    Hi Marc,
    I have been looking up the internet and the WebTest tutorials for a way to set a https header value inside section.
    Our test needs to perform 2 or 3 https post and a header variable(XYZ) needs to be unique for every post. Iam using to generate the unique value and am able to set it once within the config section of webtest, so the first https post works fine.But I could not find a way to update that header parameter/property in the steps section, with a unique value for the second and third https posts.

  4. Madhuri said,

    March 28, 2008 at 11:59 pm

    Sorry hit submit before finishing. 🙂

    Could you please point out a way to do it, or a tutorial that explains how to update config/header values inside WebTest steps? I would greatly appreciate any help from you.


  5. Marc Guillemot said,

    April 1, 2008 at 3:26 pm


    the best place to get WebTest support is the WebTest mailing list. If you’re looking for paid support and want to know my rates, please contact me directly.

  6. Raghu said,

    July 17, 2009 at 2:34 pm

    Hi Marc,

    I used Webtest … It gives fabulous outcome. For that I am thanking you ever.

    One thing I want to ask you is in Webtest there isn’t support for Modal Dialog …for ex., simple javascript alert dialog.

    So when this problem possibly be resolved?

    Thanks for all the great work you are doing once again !

    • Marc Guillemot said,

      July 20, 2009 at 4:17 pm

      Hi Raghu,

      thanks for the nice comment.

      Concerning modal dialog, I think that it is supported since a long time. Please bring the issue to the mailing list if you have problem with it using a recent WebTest build.

  7. Paresh said,

    August 18, 2009 at 12:51 pm

    Hi Mark,

    I am writing a webtest for web application which is using a javascript library called jQuery.

    I am getting following error while running a webtest.

    JavaScript error loading page http://nitra.wip.motorplace.com/test-dgpautomation/HomePage?disableBundling=true: Wrapped java.lang.NullPointerException: sourceCode (http://assets.cobaltnitra.com/websites/websitesEar/websitesWebApp/common/js/jquery.main.js#646)

    On line 646 in jquery.main.js

    following code is there:
    head.insertBefore( script, head.firstChild );
    head.removeChild( script );

    These 2 lines available under following function in jQuery

    // Evalulates a script in a global context
    globalEval: function( data ) {
    data = jQuery.trim( data );

    if ( data ) {
    // Inspired by code by Andrea Giammarchi
    // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
    var head = document.getElementsByTagName(“head”)[0] || document.documentElement,
    script = document.createElement(“script”);

    script.type = “text/javascript”;
    if ( jQuery.browser.msie )
    script.text = data;
    script.appendChild( document.createTextNode( data ) );

    // Use insertBefore instead of appendChild to circumvent an IE6 bug.
    // This arises when a base node is used (#2709).
    head.insertBefore( script, head.firstChild );
    head.removeChild( script );

    Do you have any idea about this error ?

  8. Alex said,

    May 5, 2010 at 11:43 am

    Hi, Marc!

    Would you be interested reviewing our RoutineBot automation software (www.routinebot.com)? It is would be possible to use a backlink to our web-site into the post, then I’ll be interested in paying you via paypal.

    Thank you!

  9. john said,

    June 1, 2010 at 3:07 am

    XX-XXX-XXXX 03:35:01 com.gargoylesoftware.htmlunit.
    IncorrectnessListenerImpl notify
    WARNING: Obsolete content type encountered: ‘text/javascript’.

    I get this error repeatedly while trying to scrape test few sites
    using htmlUnit. I tried Web-harvest that does scrape few and doesnt
    do for others.Same is the case with HtmlUnit. Problem lies that
    web-harvest does scrape ones not done by htmlUnit and visa versa.

    What is the above problem in HtmlUnit. I thought HtmlUnit is
    better than Web-Harvest, but now getting this error …..
    XX-XXX-XXXX 03:35:01 com.gargoylesoftware.htmlunit.
    IncorrectnessListenerImpl notify
    WARNING: Obsolete content type encountered: ‘text/javascript’.

    site: http://www.marvel.com/

  10. Vikrant said,

    October 25, 2010 at 10:47 am

    Hi marc i am using htmlunit in my project.but i need to connect through NTLM proxy but all my efforts are in vain..I am able to connect through NTLM proxy.I am using the same Authsccope ,NTCredentials object as used in HttpClient library.HttpClient is easily connecting through the proxy.But the html unit keeps on throwing 407 error of authentication required.Please can you help me .I am really stuck at this point.

    i am using

    new AuthScope(“xxx.xxx.co.in”, 8080, “xxx”),
    new NTCredentials(“x_xx”, “xxxx”, “xxx”, “xxx”));
    webClient.setProxyConfig(new ProxyConfig(“xxx.persistent.co.in”, 8080));

    this is what i am using in html unit.

  11. A. Renaud said,

    February 20, 2011 at 6:38 am

    As I was trying to emulate a web browser HTTPS behaviour in a recent project, with much problems, HtmlUnit truly ‘saved my ass’ with that. Really remarkable and thanks for it. Now, can you be serious a minute, come back on planet Earth, see the hundreds of web postings of people scratching their head trying to find how to do this very simple and common thing, and implement an .enter() method instead of the silly .type(‘\n’) ? … Merci bien, A.R.

    • Marc Guillemot said,

      February 21, 2011 at 7:44 am

      Improvements to HtmlUnit’s API are always welcome but the right place for such improvements is HtmlUnit’s bug tracking system (or the mailing list), not my blog 😉

  12. Jagdev said,

    February 23, 2011 at 5:50 am

    Hi Marc,

    I am using HtmlUnit as browser for automated testing of my web application.My web application is ajax enabled so if I am using other browsers they are working fine but my requirement is I have to use HtmlUnit but it is not handling ajax properly .Currently I am using crawljax with HtmlUnit browser.

    Thanks in advance

    • Marc Guillemot said,

      February 23, 2011 at 7:54 am

      Jagdev, please use HtmlUnit mailing list for questions concerning HtmlUnit!

  13. February 23, 2012 at 7:11 am

    […] introduced by Marc Guillemot [0] in HtmlUnit [1] and already implemented by GroovyTestCase.notYetImplemented [2], this time it […]

  14. Benny said,

    July 17, 2012 at 7:06 am

    Hallo Marc,

    da ich gelesen habe, dass du bei Bonn wohnst, schreibe ich mal auf deutsch.
    Wie ich gelesen habe, hast du dich ja mit JMeter, Selenium und Canoo WebTest auseinander gesetzt. Kann eines der drei Tools die GUI einer Software erkennen bzw. einen Bildvergleich machen?
    Über eine zeitnahe antwort würde ich mich freuen.


  15. Jack said,

    October 23, 2012 at 8:55 pm

    Hey Marc,

    I reviewed your blog and discussion about JMeter’s integration with HtmlUnit and it makes sense to me. You hit the pain point we have currently testing AJAX heavy web applications, regardless of what load testing tools we use, JMeter or commercial tools. Like you said, it’s a huge burden and maintenance issue to duplicate what the application has done on the JavaScript side to simulate the client behavior. In some cases we found this is not possible, for example with GWT, we actually have to re-record and re-script every time there is a new release of this GWT based application. What a pain.

    Other people’s argument that the load generation tool need to be fast and efficient, I agree with that. However, if there is a tool that is both fast/efficient, and also can solve the maintenance issue, I think that’s a winner. If the headless browser is lightweight enough so that an average machine can run 300 simultaneous virtual users, I think this is an attractive approach.

    Therefore I encourage you to re-open the discussion on JMeter and HtmlUnit integration. Speaking from my own experience, I think this is a valid approach worth pursuing.

    I’ll also send this content to your email using my personal email.


  16. March 27, 2013 at 4:46 pm

    Bonjour Marc, Je suis vraiment un junior dans Webtest et mon projet utilise NTLM proxy, donc j’utilise le groovy trouver sur internet pour me connecter avec NTLM proxy. Malgré tout mes efforts, je n’y arrive pas à me connecter. Voici le groovy que j’utilise
    def prov = new com.gargoylesoftware.htmlunit.DefaultCredentialsProvider();
    def webClient = step.context.webClient;

    Webtest failli toujours sur l’invoke et me donne l’erreur 401-Unauthorized:access is denied due to invalid credentials. Comment résoudre ce problème?

  17. YuHuan said,

    April 4, 2015 at 5:08 am

    hello Marc, I use htmlunit as a crawler. But I got WARN when page use javasrcipt file that is application/x-javascript type. I think this problem is rhino’s limit ? Is there any solution? I work this for my company so we can pay anyone helping us.

  18. ankit said,

    April 14, 2015 at 6:55 pm

    Hello Marc,
    I am having problem while posting an image to facebook group.

    if you get some time please look into


  19. February 4, 2016 at 5:36 am

    It’s difficult to find well-informed people about this subject,
    however, you seem like you know what you’re talking
    about! Thanks

  20. March 16, 2016 at 6:11 am

    I’m really loving the theme/design of your site. Do you
    ever run into any internet browser compatibility issues?
    A handful of my blog audience have complained about my blog
    not working correctly in Explorer but looks great in Safari.
    Do you have any solutions to help fix this issue?

  21. Patrick said,

    January 13, 2017 at 4:39 pm

    Hi Marc!
    I’m trying to introduce HtmlUnit to the selenium test suites of our company. It seems that the current version neither supports the ‘let’ expression of JavaScript 6 nor the console object. Am I right or did I miss something? Is there a general documentation of supported objects and JavaScript features somewhere?



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: