我正在尝试加载需要使用Sempium的Python脚本进行身份验证的网页。
options = webdriver.ChromeOptions()
prefs = {'download.default_directory': r"download.default_directory=" + download_folder,
"download.prompt_for_download": False, 'profile.default_content_setting_values.automatic_downloads': 1}
options.add_experimental_option('prefs', prefs)
options.add_argument("--start-maximized")
options.add_argument('--disable-browser-side-navigation')
driver = webdriver.Chrome(chrome_options=options, executable_path=chrome_driver)
driver.get('https://user:pass@somepage.com/32324')
这仍然会获得带有用户名和密码的弹出警报。 所以,我认为我只是在代码中处理警报,但似乎页面在警报关闭之前没有完成加载,因此脚本停留在get函数上。 我该如何处理这种情况?
编辑:这不是重复,因为那里接受的答案对我不起作用。答案 0 :(得分:0)
试试这个......
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
答案 1 :(得分:0)
浪费了好几个小时后,事实证明这是chromedriver的一个已知问题: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1917&q=authentication&colspec=ID%20Status%20Pri%20Owner%20Summary
我转而使用Firefox,它可以从那里开始工作。
答案 2 :(得分:0)
如果您的意思是html基本身份验证,您还可以尝试以下解决方法:(抱歉,我只知道Java但它应该非常相似)
driver.get("http://[USERNAME]:[PASSWORD]@[rest of the Page-URL you want to
enter]");
driver.get("[normal URL of the page you want to enter]");
第二个驱动程序调用只是重新加载页面。我不知道你是否需要它,但我需要自动化。
答案 3 :(得分:0)
尝试使用autoit:
代码类似于::
from selenium import webdriver
import autoit
driver= webdriver.Chrome()
driver.get("http://sitewithpopup.com")
autoit.win_wait_active("",30) # Make sure you give blank since the cursor is at userid
autoit.send("Username{TAB}")
autoit.send("Password{Enter}")
由于自动程序会自动键入光标所在的位置,并且默认情况下,光标位于 userID 字段上,因此您可以使用它。