如何使用python处理硒中的身份验证弹出窗口?

时间:2020-07-07 11:45:27

标签: python selenium-webdriver popup

Authentication popup

这是我的代码:

def cloudtest(url,username, pw):
    driver = webdriver.Chrome()
    driver.get(url)
    driver.find_element_by_xpath("//input[@name = \"username\"]").send_keys(username)
    driver.find_element_by_xpath("//input[@name = \"password\"]").send_keys(pw)
    driver.find_element_by_xpath('//button[@type="submit"]').click()
    time.sleep(5)
    alert = driver.switch_to.alert()
    alert.send_keys(username)
    alert.send_keys(Keys.TAB)
    alert.send_keys(pw)

实际上,我必须输入两次凭据,一次是单击URL时,一次是单击Login之后。单击登录后,我弹出窗口再次要求提供凭据。

我尝试了上面的代码,在switch_to.alert()收到一条错误消息,指出没有警报。

“ selenium.common.exceptions.NoAlertPresentException:消息:没有这样的警报”

请提出建议?

1 个答案:

答案 0 :(得分:0)

经过多次迭代,我得以实现。我收到许多博客,这些博客主要在Java的Selenium Web驱动程序上进行了解释。但是,这是您可以在python中完成此操作的方法。

只需在下面的第8行中拆分URL:

driver = webdriver.Chrome()
driver.get(url)
driver.find_element_by_xpath("//input[@name = \"username\"]").send_keys(username)
driver.find_element_by_xpath("//input[@name = \"password\"]").send_keys(pw)
driver.find_element_by_xpath('//button[@type="submit"]').click()
time.sleep(5)
url = "https://" + username + ":" + pw + "@" + "planning3-test-epmdevams.pbcs.em2.oraclecloud.com/aps/Test"
driver.get(url)