请注意,我的问题与Python Selenium Alert -- Prompt username and password is not working不重复。 在我的情况下,它不适用于Chrome而不适用于Firefox,因为Firefox正在运行。此外,我已经尝试了错误中提供的解决方案,但它对Chrome无效。
以下是代码示例
wait(driver, 5).until(EC.alert_is_present())
alert = driver.switch_to_alert()
alert.send_keys("username" + Keys.TAB + "password")
alert.accept()
预期的行为是 - 密钥正确发送到弹出窗口。
我在第1行遇到超时异常 - selenium.common.exceptions.TimeoutException:消息:
实际存在警报时。 authentication popup
删除第1行时,我在第2行遇到异常 selenium.common.exceptions.NoAlertPresentException:消息:没有警报打开
有关于此的任何想法吗?我如何通过chromedriver传递凭据? 此外,我还需要能够在linux命令行服务器上以无头模式执行此操作。
我找到了解决方法:
def __getCapabilitiesForChrome(ip, port, user, password):
proxy = {'address': user + ":"+password+"@"+ip + ':' + str(port),
'username': user,
'password': password}
capabilities = dict(DesiredCapabilities.CHROME)
capabilities['proxy'] = {'proxyType': 'manual',
'httpProxy': proxy['address'],
'ftpProxy': proxy['address'],
'sslProxy': proxy['address'],
'noProxy': '',
'class': "org.openqa.selenium.Proxy",
'autodetect': False}
return capabilities
capabilities = __getCapabilitiesForChrome(ip, port, username, password)
driver = webdriver.Chrome(executable_path='chromedriver.exe', desired_capabilities=capabilities)
driver.get('https://www.foo.bar/')
但实际发送密钥尚未实现https://github.com/w3c/webdriver/issues/385。