selenium 如何通过Selify中弹出的身份验证?

cld4siwp  于 2022-11-10  发布在  其他
关注(0)|答案(5)|浏览(161)

我正在尝试加载一个网页,该网页需要使用带有Selify的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函数上。我该如何处理这种情况?
编辑:这不是复制,因为那里被接受的答案对我不起作用。

hxzsmxv2

hxzsmxv21#

如果您指的是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]");

第二次驱动程序调用只是重新加载页面。我不知道你是否需要它,但对我的自动化来说是需要的。

fhg3lkii

fhg3lkii2#

在浪费了许多小时之后,事实证明这是chromeDriver的一个已知问题:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1917&q=authentication&colspec=ID%20Status%20Pri%20Owner%20Summary
我转而使用Firefox,它可以在那里工作。

gpnt7bae

gpnt7bae3#

所以这可能是最愚蠢的解决方案,我不能说它对每个人都有效,但是...尝试刷新页面。只要:

driver.get("https://website.com")
time.sleep(1)
driver.refresh()

在Chrome中,这将清除身份验证弹出窗口,并将我带到登录页面,然后Selify可以处理该页面。

bprjcwpo

bprjcwpo4#

试试这个..。

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);
ttisahbt

ttisahbt5#

尝试使用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}")

因为AutoIt将在您的光标所在的位置输入**,并且默认情况下,光标在用户ID字段上,所以您可以使用它。

相关问题