Python+selenium+firefox NTLM身份验证与pop(警报)窗口问题

2024-04-23 20:48:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经试过三种方法了,只有第一种方法有效。在

  1. 在url前面添加用户信息,这是成功的唯一途径。在

    url_address=“http://username:passwd@abc.cde.com/” 浏览器=网络驱动程序Firefox() 浏览器.get(网址地址)

2.第二种方法是使用.switch_to_alert()切换到弹出窗口 并使用send_keys()输入用户信息,直到send_key为止,它都可以正常工作(键.TAB)已经使用过;它会将输入标记符标记到密码字段中,但当send_key(“password”)行时,它会跳回用户名字段然后输入密码!我在下面制作了一个演示gif链接。
Demo with Key.TAB

browser = webdriver.Firefox()
browser.get(url_address)
WebDriverWait(browser,10).until(EC.alert_is_present(),"wait for alert pop out")
alert_window=browser.switch_to_alert()
alert_window.send_keys("username")
time.sleep(5)
alert_window.send_keys(Keys.TAB)
time.sleep(5)
alert_windows.send_keys("passwd")

在时间。睡觉是为了知道标签是否真的有用。 如果移除,结果相同

Update 11/14 change send_keys to one line and it work as expect Like this alert_window.send_keys("username"+Keys.TAB+"passwd")

3.第三种方法是使用警报_窗口.身份验证()但它回来了

selenium.common.异常.WebDriverException:消息:POST/session/c7411dfa-5a0e-41e3-b8b3-e8f7d9dc9843/alert/credentials与已知命令不匹配

有没有办法解决2号和3号的问题? 工具清单: python 3.6.2 硒 firefox 54.0.1(32位)


Tags: to方法用户browsersend信息urladdress