java – 如何切换到窗口身份验证弹出窗口并输入凭据?
打开应用程序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而不是app URL abc.com并使用autoit,它就可以工作. 任何人都可以建议我在这里缺少什么?我也尝试在点击登录按钮后切换窗口,考虑其新的URL然后自动命令,但它仍然无法正常工作. driver.switch_to_window(driver.window_handles[1]) 有什么想法吗? 注意:我注意到点击登录按钮,窗口无限加载&光标在Windows身份验证poup的用户名text-field上处于活动状态.此外,一旦出现Windows身份验证窗口,selenium命令都不起作用,也没有自动命令. 解决方法
该对话框被selenium视为警报.在c#中,输入Firefox测试凭据的代码如下所示:
// Inputs id with permissions into the Windows Authentication box var alert = driver.SwitchTo().Alert(); alert.SendKeys( @"username" + Keys.Tab + @"password" + Keys.Tab); alert.Accept(); 第一行是告诉驱动程序检查打开警报(对话框). 第二行将用户名和密码发送到警报 然后第三行发送这些凭证,并假设它们有效,测试将继续. 假设您正在使用Firefox进行测试,则无需使用额外的框架来处理此身份验证框. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |