Я могу войти на веб-сайт, используя Selenium без головы Chrome Веб-драйвер, используя следующую функцию:
def getChromeDriver():
# instantiate a chrome options object so you can set the size and headless preference
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")
chrome_driver = getcwd() + "/chromedriver"
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
# return driver object
return driver
def login(driver, url):
try:
# go to the webpage
driver.get(url)
# login to site
driver.find_element_by_id('loginform-username').send_keys('<username>')
driver.find_element_by_id('loginform-password').send_keys('<password>')
# hit submit
driver.find_element_by_name('login-button').click()
success = True
except Exception as e:
print("ERROR!!! : " + e)
success = False
finally:
return (driver, success)
if __name__ == "__main__":
chrome_driver = getChromeDriver()
(chrome_driver, success) = login(chrome_driver, 'http://example.com/site/login')
После этого я передаю этот объект веб-драйвера другой функции, чтобы сделать снимок экрана веб-страницы. следующим образом:
def takeScreenshot(driver, pagename, url):
# go to the webpage
driver.get(url)
# capture the screen
driver.get_screenshot_as_file("./screenshots/" + pagename + ".png")
if __name__ == "__main__":
...
...
takeScreenshot(chrome_driver, "Customers", "http://example.com/customer/index.php")
Но когда я открываю скриншот, это страница входа, хотя я знаю, что я уже успешно вошел в систему.
С другой стороны, когда я сделать снимок экрана, не передавая объект драйвера какой-либо функции, он работает просто отлично:
if __name__ == "__main__":
...
...
chrome_driver.get("http://example.com/customer/index.php")
chrome_driver.get_screenshot_as_file("/home/ubuntu/customer.png")
Вышеуказанные строки кода работают точно так, как ожидалось. Есть ли другой способ, которым объект Webdriver должен передаваться в качестве аргумента, или мне нужно передавать куки отдельно? Заранее спасибо.