Я разработал пару сценариев Python с использованием Selenium и, во-первых, PhantomJS. Направляясь к автоматическим загрузкам, я переключился на (возглавляемый) Firefox (который работал), а затем на Chrome с опцией безголовых, чтобы браузер не открывался передо мной.
Мой первый скрипт, который обращается к странице и нескольким элементам HTML, прекрасно работает с Chrome без головы.
Второй, однако, работает только с Chrome. Если я добавлю "безголовый" вариант, он больше не работает. Когда я пытаюсь напечатать HTML-код в автономном режиме, чтобы понять, почему он не может найти нужный HTML-элемент, все, что у меня есть, это:
<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>
С заголовком Chrome у меня напечатан полный HTML-код. Вот как я запускаю свой Chrome без головы:
options = webdriver.ChromeOptions()
options.add_argument("--ignore-certificate-errors")
options.add_argument("headless")
driver = webdriver.Chrome(chrome_options=options)
Опять же, обратите внимание, что это работает в другом моем сценарии. Единственная разница здесь в том, что мне нужно войти в систему, чтобы получить доступ к странице, но даже тогда, почему это будет работать с головой? Мой скрипт предназначен для автоматического входа в любом случае, заполнив форму.
Python: 3.6.1, Chrome: 60.0.3112.78 (64 бита), Selenium: 3.4.3
Любая идея? Спасибо.
** ОБНОВЛЕНИЕ: Вот начало кода **
url = 'https://10.11.227.21/tmui/'
driver.get(url + "login.jsp")
html_source = driver.page_source
print(html_source)
blocStatus = WebDriverWait(driver, TIMEOUT).until(EC.presence_of_element_located((By.ID, "username")))
inputElement = driver.find_element_by_id("username")
inputElement.send_keys('actualLogin')
inputElement = driver.find_element_by_id("passwd")
inputElement.send_keys('actualPassword')
inputElement.submit()