我开发了一个机器人,在工作的时候,在后台下载一些文件。但是每次下载的时候,屏幕上都会出现webdriver的画面,我不得不手动将其最小化。有什么建议吗?
options = Options()
options.add_experimental_option("prefs", {
"plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}],
"download.default_directory":"D:\Download",
"download.extensions_to_open": "applications/pdf",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True,
"safebrowsing_for_trusted_sources_enabled": False,
"safebrowsing.enabled": False,
"profile.default_content_setting_values.notifications" : 2
})
driver = webdriver.Chrome('chromedriver',chrome_options=options)
driver.get("https://www.copel.com/AgenciaWeb/autenticar/loginCliente.do")
我的情况是不能用无头的
如这里提到的。Selenium Web-driver文档
您可以使用以下方法最小化或最大化您的浏览器窗口 minimize_window()
和 maximize_window()
函数。
增加这一行就解决了你的问题。
driver.minimize_window()
但是,如果你的网站在点击某些链接后打开了一个新的标签页,只添加这一行可能没有帮助。所以,添加这些行将确保你的脚本工作在最后打开的标签页,而不是第一个标签页。在您的脚本中,在每次点击事件后添加这些行,这将导致打开一个新的标签页。
win_list = driver.window_handles
driver.switch_to.window(win_list[-1])
例如,这里。l1
如果我们不切换到最后一个打开的标签页,将抛出错误。
driver.get("https://sites.google.com/a/chromium.org/chromedriver/home")
l0 = driver.find_element_by_xpath('/html/body/div[2]/div/div[1]/div/div[2]/div/table/tbody/tr/td[2]/div/div[3]/div/table/tbody/tr/td/div/h2/font/a')
l0.click() # This click event results in opening a new tab
win_list = driver.window_handles # This gives the list of all tabs
driver.switch_to.window(win_list[-1]) # To switch to the last tab opened
l1 = driver.find_element_by_xpath('/html/body/div[2]/div/div[1]/div/div[2]/div/table/tbody/tr/td[1]/div/div/ul/li[2]/div/a')
l1.click()