【发布时间】:2019-06-17 07:49:30
【问题描述】:
打开应用程序 URL 后,用户被重定向到有登录按钮的登录页面。
driver.get("abc.com")
现在当用户点击登录按钮时,在同一个窗口中的 URL 会更改为 xyz.com 并显示身份验证弹出窗口,用于登录目的,类似于下图所示。
要在身份验证窗口中输入用户名和密码,我尝试了以下代码
shell = win32com.client.Dispatch("WScript.Shell")
shell.Sendkeys("username")
time.sleep(1)
shell.Sendkeys("{TAB}")
time.sleep(1)
shell.Sendkeys("password")
time.sleep(1)
shell.Sendkeys("{ENTER}")
time.sleep(1)
没有用。然后我尝试使用上面的代码直接打开Windows身份验证弹出窗口(通过单击登录按钮后复制URL),它起作用了
driver.get("xyz.com")//instead of abc.com my application URL
我有点困惑。如果我打开我的应用程序 URL abc.com,单击登录按钮,使用 autoit,它没有输入凭据。但是,如果我直接发送窗口身份验证 URL xyz.com 而不是应用 URL abc.com 并使用 autoit,它就可以工作。
谁能建议我在这里缺少什么?我还尝试在单击登录按钮后切换窗口,思考它的新 URL,然后使用 autoit 命令,但它仍然无法正常工作。
driver.switch_to_window(driver.window_handles[1])
对此有任何想法吗?
注意:我注意到点击登录按钮,windows 正在无限加载,并且光标在 windows 身份验证弹出窗口的用户名文本字段上处于活动状态。此外,一旦出现 Windows 身份验证窗口,selenium 命令和 autoit 命令都不起作用。
【问题讨论】:
-
@DebanjanB 我的情况不同。当我打开应用程序说 abc.com 时,它没有显示身份验证弹出窗口。现在,当用户单击登录按钮时,会出现 Windows 身份验证弹出窗口,并且 URL 会更改为 xyz.com。这就是使用第一个 url 传递用户名和密码不起作用的原因。知道如何解决吗?
-
尝试打开
url,点击登录按钮后会显示该url以及凭据。 -
你的意思是说我应该使用两次 driver.get() 函数?首先是应用程序,然后是单击登录按钮后的第二个?