Как использовать метод addCustomRequestHeader в селене? - PullRequest
6 голосов
/ 26 августа 2011

Я пытался использовать метод addCustomRequestHeader, чтобы установить пользовательский заголовок для запросов селена. Ниже приведен исходный код

       Selenium sel = new DefaultSelenium("localhost",4444,"*firefox","http://www.google.com");
       sel.start("addCustomRequestHeader=true");
//  sel.start();
    sel.addCustomRequestHeader("mycustomheader","automation");
    sel.open("http://www.google.com/");

Этот код не добавил заголовок к запросу. Я попытался найти заголовки запроса, используя Fiddler. Кто-нибудь здесь знает, что я здесь не так делаю? Любая помощь будет оценена

Ответы [ 2 ]

2 голосов
/ 15 октября 2012

Вам необходимо запустить селен в режиме прокси-инъекции

java -jar selenium-server-standalone.jar -proxyInjectionMode

Затем вы можете добавить заголовки пользовательских запросов, например, (в Python)

sel.start("addCustomRequestHeader=true")
sel.add_custom_request_header("mycustomheader","automation")
sel.open('http://www.google.com')

Чтобы увидеть, есть ли пользовательский заголовокбыла применена, проверьте вкладку, на которой запущен сервер селена.Вы должны увидеть что-то подобное в сообщениях консоли

INFO - Command request: addCustomRequestHeader[mycustomheader, automation] on session 
INFO - Got result: OK on session 
1 голос
/ 15 июля 2018

В моем случае использование селена в режиме прокси-инъекции недопустимо, поэтому я следовал подходу расширения Chrome 'ModHeader' для установки пользовательских заголовков. Этот подход работал хорошо для меня.

ModHeader Extension: https://github.com/mdamien/chrome-extensions-archive

Вот фрагмент кода

ChromeOptions chromeOpt = new ChromeOptions();
chromeOpt.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");

chromeOpt.addExtensions(new File("./ModHeader_v2.2.3.crx"));

WebDriver driver = new ChromeDriver(chromeOpt);

// set the context on the extension so the localStorage can be accessed
driver.get("chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/icon.png");

// setup ModHeader with two headers (token1 and token2)
((JavascriptExecutor)driver).executeScript(
"localStorage.setItem('profiles', JSON.stringify([{                " +
"  title: 'Selenium', hideComment: true, appendMode: '',           " +
"  headers: [                                                      " +
"    {enabled: true, name: 'token1', value: 'testHeaderValue1', comment: ''}, " +
"    {enabled: true, name: 'token2', value: 'testHeaderValue2', comment: ''}  " +
"  ],                                                              " +
"  respHeaders: [],                                                " +
"  filters: []                                                     " +
"}]));                                                             ");
driver.navigate().to("https://localhost:8443");

Fiddler Пользовательский снимок заголовка Fiddler Custom header snapshot

...