环境:针对Chrome在Java中进行硒测试
场景:在我的应用程序的GUI中,有一个按钮可将一个充满数据的表单提交给外部服务,随后将用户重定向到外部服务登录页面
由于我的应用程序位于公司防火墙内,因此必须提供一个用户名/密码以供外部服务使用,但该应用程序不知道这一点,因此不提供它(它将在生产环境中正常工作,但测试环境属于特殊情况)。因此,会出现一个弹出窗口,并且在手动测试期间,测试人员手动提供用户名和密码,然后提交对话框。这不是JavaScript对话框-我认为它是一个实际的模态Windows对话框,因此它有效地暂停了处理过程,硒一直在等待直到消失。
问题:我正在尝试自动执行此过程,但无法通过对话框。因为对话框阻止Java / Selenium的处理,所以我无法实现处理对话框的代码,例如集成AutoIt或使用Robot,因为按下按钮后程序流就永远无法到达该代码。通常,我会安装一个独立版本的AutoIt在后台在我的计算机上运行并捕获弹出窗口(不理想,但可以运行),但是由于公司域策略的严格限制,这是不可能的在短期内。我怀疑他们有可执行文件的白名单,因此要使任何第三方工具都能正常工作可能很棘手。
有人能想到解决这个问题的方法吗?
我怀疑这是不可能的,但是值得检查是否有任何火花有任何想法。
答案 0 :(得分:1)
WebDriver不支持此功能,因此无法使用普通的Selenium完成。
WebDriver项目中存在一个问题,该问题支持处理基本身份验证提示:
https://github.com/w3c/webdriver/issues/385
https://github.com/SeleniumHQ/selenium/issues/453
A,这个问题尚未解决。
答案 1 :(得分:1)
如果您不能从另一个进程使用AutoIt,因为该进程必须位于某个白名单中,那么您可以使用autoitx4java从另一个线程使用它。如果您可以检测到对话框本身,那么您当然应该这样做,但是AFAIK Chrome的对话框对AutoIt(基于Windows UIAutomation的其他任何技术)都是透明的。在这种情况下,只需在按下按钮之前生成线程,使该线程休眠1秒钟左右(在thread方法的第一条语句中),然后“盲目”键入用户名,Tab键,密码和输入。它不是一个非常重要的元素,但我认为它应该可以工作。