Software Quality Assurance & Testing Asked by udit choudhary on August 10, 2020
I am able to modify http request header using BrowserMobProxy, the same way explained
https://sqa.stackexchange.com/a/37318/9043
But, the problem I am having at the moment is, that I am executing my scenarios on dev/local/playpen environment (environment before System integration testing). And to open the website on this environment needs proxy to set.
When I set my proxy then it fails to modify header and apply the proxy. When I comment the proxy part then it easily modifies the header.
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(0);
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
proxy.addRequestFilter((request, contents, messageInfo)->{
request.headers().add("some-header-attribute", "RandomeValue");
System.out.println(request.headers().entries().toString());
return null;
});
String _host = Utils.getConfigValue("proxy.host");
String _port = Utils.getConfigValue("proxy.port");
seleniumProxy.setProxyType(Proxy.ProxyType.MANUAL);
seleniumProxy.setHttpProxy(_host + ":" + _port);
seleniumProxy.setSslProxy(_host + ":" + _port);
seleniumProxy.setFtpProxy(_host + ":" + _port);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
String proxyOption = "--proxy-server=" + seleniumProxy.getHttpProxy();
options.addArguments(proxyOption);
Browsermob-Proxy
is a reliable solution, But while working with the remote grid machine, Browsermob-proxy isn't really helpful. Alternatively, I found this as a working solution for my setup.
Hopefully, it will be useful for someone with a similar setup.
How to download the Modheader? Link
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File(C://Downloads//modheader//modheader.crx));
// Set the Desired capabilities
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
// Instantiate the chrome driver with capabilities
WebDriver driver = new RemoteWebDriver(new URL(YOUR_HUB_URL), options);
.
// set the context on the extension so the localStorage can be accessed
driver.get("chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html");
Where `idgpnmonknjnojddfkpgkljpfnnfcklj` is the value captured from the Step# 2
Javascript
.
((Javascript)driver).executeScript(
"localStorage.setItem('profiles', JSON.stringify([{ title: 'Selenium', hideComment: true, appendMode: '',
headers: [
{enabled: true, name: 'token-1', value: 'value-1', comment: ''},
{enabled: true, name: 'token-2', value: 'value-2', comment: ''}
],
respHeaders: [],
filters: []
}]));");
Where token-1
, value-1
, token-2
, value-2
are the request headers and values that are to be added.
Now navigate to the required web-application.
driver.get("your-desired-website");
Answered by Praveen on August 10, 2020
2 Asked on November 30, 2021
1 Asked on November 28, 2021 by denis-filatov
1 Asked on November 28, 2021 by saloni-singhal
2 Asked on November 25, 2021
cross browser testing manual testing mobile mobile applications
1 Asked on November 23, 2021
1 Asked on November 21, 2021 by rohan-kalia
2 Asked on November 19, 2021 by nizariansyah-agung
5 Asked on November 15, 2021 by alexey-r
2 Asked on November 11, 2021 by prinz
load testing manual testing mobile applications performance testing
2 Asked on November 11, 2021
4 Asked on October 25, 2021 by gb2d
4 Asked on October 25, 2021 by jainam
1 Asked on October 25, 2021
1 Asked on October 25, 2021
1 Asked on October 25, 2021 by markus-pallasch
1 Asked on October 25, 2021 by ganvartin
2 Asked on October 25, 2021 by wally-hartshorn
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP