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

时间:2017-11-10 07:30:42

标签: python python-3.x selenium selenium-webdriver

我已经尝试了三种方式,只有第一种方式可以工作。 1.在网址前添加用户信息,这只是成功。

url_address = "http://username:passwd@abc.cde.com/"
browser = webdriver.Firefox()
browser.get(url_address)

2.第二种方法是使用.switch_to_alert()切换到弹出窗口   并使用send_keys()键入用户信息,直到send_key(Keys.TAB)使用它才能正常工作;它会将输入制造商TAB输入密码字段但是当send_key(&#34;密码&#34;)行,< strong>它跳回用户名字段,然后输入密码!我在下面制作了一个Demo 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")

time.sleep是为了知道TAB是否真的有效。 如果删除了相同的结果

  

更新11/14将send_keys更改为一行,它按预期工作   喜欢这个alert_window.send_keys(&#34;用户名&#34; + Keys.TAB +&#34; passwd&#34;)

3.第三种方法是使用alert_window.authenticate()但它返回

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

有任何想法解决2和3的问题吗? 工具清单: python 3.6.2 硒 firefox 54.0.1(32位)

0 个答案:

没有答案