将密钥发送到身份验证窗口不适用于chromdriver

时间:2017-11-29 10:52:30

标签: python-2.7 selenium selenium-chromedriver

请注意,我的问题与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

0 个答案:

没有答案