Menu

#136 Setting User-Agent not work when multiple WebTesters with different User-Agent

Release_3.3
closed-fixed
5
2015-07-13
2015-05-07
Randy Chang
No

PLEASE PATCH SOURCE CODE IF YOU FEEL THIS USEFUL.

** Problem:

I create two WebTesters with different "User-Agent" set using
getTestContext().setUserAgent(custom_user_agent_N),

I found that the later "custom_user_agent_2" will override first "custom_user_agent_1", thus WebTester.gotoPage() return unexpected HTMLs for specified User-Agnet.

** Solution:

This is because when creating WebClient, is pass same -static- instance of BrowserVersion.FIREFOX_24, so that bv.setUserAgent() would always override the string used before.

I changed the code with '.clone()' appended, it solves!

In [HtmlUnitTestingEngineImpl.java]:

protected WebClient createWebClient() {
BrowserVersion bv;
if (testContext.getUserAgent() != null) {

// ORIGINAL :
// bv = BrowserVersion.FIREFOX_24;
// MODIFIED by randy827@gmail.com :
bv = BrowserVersion.FIREFOX_24.clone();

  bv.setUserAgent(testContext.getUserAgent());
} else {
  bv = defaultBrowserVersion; // use default (which includes a full UserAgent string)
}

if (getTestContext().getProxyHost() != null && getTestContext().getProxyPort() > 0) {
  // Proxy configuration
  return new WebClient(bv, getTestContext().getProxyHost(), getTestContext().getProxyPort());
} else {
  return new WebClient(bv);
}

}

Discussion

  • Julien HENRY

    Julien HENRY - 2015-07-13
    • labels: --> HtmlUnit plugin
    • status: open --> closed-fixed
    • assigned_to: Julien HENRY
    • Group: Release_2.2 --> Release_3.3
     
  • Julien HENRY

    Julien HENRY - 2015-07-13

    Patch applied, thanks

     

Log in to post a comment.

MongoDB Logo MongoDB