当前位置: 首页 > 面试题库 >

Webdriver-HTTP验证对话框

郑俊彦
2023-03-14
问题内容

我有一个非常简单的selenium-webdriver脚本。我想使用webdriver进行HTTP身份验证。

脚本:

WebDriver driver = new FirefoxDriver();  
driver.get("http://www.httpwatch.com/httpgallery/authentication/");
driver.findElement(By.id("displayImage")).click();
Thread.sleep(2000);
driver.switchTo().alert().sendKeys("httpwatch");

问题:

driver.switchTo().alert().sendKeys("httpwatch");

抛出

org.openqa.selenium.NoAlertPresentException:不存在警报

题:

  • Webdriver是否仅找到警报对话框作为警报?
  • 在不使用AutoIt或http:// username:password @somesite的情况下,可以执行哪些自动化操作?

编辑

警报具有以下方法,似乎尚未实施。

driver.switchTo().alert().authenticateUsing(new UsernameAndPassword("username","password"))

问题答案:

问题在于 这不是javascript弹出窗口, 因此您无法通过selenium的对其进行操作alert()

如果AutoIt和URL中的提交凭据(最简单的选项-
仅打开URL并单击“显示图像”)都不适合您,则另一种方法是使用AutoAuth
firefox插件
自动提交以前保存的凭据:

当您选择让浏览器保存登录信息时,AutoAuth会自动提交HTTP身份验证对话框。(如果您已经告诉浏览器您的用户名和密码,并且告诉它记住用户名和密码,为什么不让它自动提交而不是每次都询问您呢?)

遵循Firefox中通过URL进行的HTTP Basic
Auth中建议的答案不起作用?线:

  • 安装AutoAuth Firefox插件;
  • 访问需要身份验证的站点。输入您的用户名和密码,并确保选择保存凭据;
  • 将AutoAuth安装文件保存在硬盘上:在插件页面上,右键单击“添加到Firefox”和“将链接另存为”;
  • 实例化Firefox webdriver,如下所示:
FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("default");
File pluginAutoAuth = new File("src/test/resources/autoauth-2.1-fx+fn.xpi");
firefoxProfile.addExtension(pluginAutoAuth);
driver = new FirefoxDriver(firefoxProfile);

另外,以类似于AutoIt选项的方式-
您可以使用sikuli屏幕识别和自动化工具在弹出窗口中提交凭据。

另请参阅其他想法和选项:

  • 支持BASIC和摘要HTTP身份验证


 类似资料:
  • 问题内容: 我有一个非常简单的selenium-webdriver脚本。我想使用webdriver进行HTTP身份验证。 脚本: 问题: 抛出 org.openqa.selenium.NoAlertPresentException:不存在警报 题: Webdriver是否仅找到警报对话框作为警报? 在不使用AutoIt或http:// username:password @somesite的情况下

  • 请先阅读 验证器 章节,HTTP 验证器基于验证器扩展,基本使用方式相似。 首先,HTTP 验证器是@HttpValidation注解,它只能写在方法上。写了这个注解,在action方法调用前会触发验证,验证失败同样的抛出异常 另外,验证规则注解,如@Required等的name属性用法也略有不同。 你可以使用$get、$post、$body、$headers、$cookie、$session、$

  • 在浏览器中直接键入下面的url,它可以工作, 但是,当我使用相同的url,用于selenium网络驱动程序测试时,它连接到 以及请求HTTP身份验证。我是否需要更改chrome浏览器中的任何设置,或调整默认配置文件?

  • 我们试图在本地模式下使用BrowserStack在内部网络上点击AUT。我已经对其进行了配置,以便获得远程浏览器会话,但当我试图通过Chrome将其定向到我们的应用程序(或防火墙内的任何)URL时,浏览器会弹出一个对话框,抱怨连接不是私有的,并要求输入用户名和密码。这不是一个正常的弹出窗口,我们无法使用Selenium自动执行,因此它会阻止我们死亡。 通过桌面浏览器会话访问时,系统知道我是谁,并以

  • 我有一个用Java Spring写的应用程序运行在Wildfly 10上。我已经使用我的RootCA和客户端证书设置了基本的x509身份验证。 基于客户端的证书CN,我可以处理多个用户角色。 我想实现的是如何动态选择应该使用的客户端证书。访问https时会显示一个对话框(这是一个系统对话框——来自火狐)。但是这个对话框只显示一次,即使注销后,对话框也不会再次显示,最后一个客户端证书会自动选择。 即

  • 问题内容: 因为在AngularJS中使用CORS和http身份验证可能会比较棘手,所以我编辑了问题以分享一个经验教训。首先,我要感谢igorzg。他的回答对我很有帮助。场景如下:您想使用AngularJS $ http服务将POST请求发送到另一个域。获取AngularJS和服务器设置时,需要注意一些棘手的事情。 第一:在您的应用程序配置中,您必须允许跨域调用 第二:您必须指定withCrede