Установите Accepted-Lang для Chrome Headless с Selenium (Python)
Настройка заголовка Accepted-Lang работает нормально с обычным Chrome через ChromeOptionsoptions.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
Я пытаюсь перейти на новый безголовый Chrome, но, по-видимому, этот параметр не влияет при проверке заголовков на validator.w3.org. Могу ли я изменить их по-другому? Кто-нибудь знает, будет ли поддержка этой функции?
Использование Chrome 60, Chromedriver 2.30, Selenium 3.4.3, Python 3.6.1 на MacOS
Используя этот код:
from selenium import webdriver
print('Start')
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_experimental_option('prefs', {'intl.accept_languages':'en,en_US'})
driver = webdriver.Chrome(chrome_options=options)
driver.get('http://validator.w3.org/i18n-checker/check?uri=google.com#validate-by-uri+')
print('Loaded')
# Check headers in output.html file. Search for 'Request headers'
html_source = driver.page_source
file = open('output.html', 'w')
file.write(html_source)
file.close
driver.implicitly_wait(5)
# Or check headers with select
# WARNING: This fails with 'headless' chrome option!
element = driver.find_element_by_xpath("//code[@class='headers_accept_language_0']").get_attribute('textContent')
print('Element:', element)
driver.close()
print('Finish')
Спасибо!
1 ответ
Это должно быть возможно с использованием Chrome-developer-protocoll (cdp).
Вы можете выполнять команды cdp, используяdriver.execute_cdp_cmd()
.