首页 > 解决方案 > 尝试在网站完全打开之前输入登录凭据时出现“无警报打开”

问题描述

在此处输入图像描述我正在尝试访问一个网站,但是要首先访问该网站,我需要输入用户名和密码,然后才能打开完整的网站。当我尝试通过“alert.sendkeys”发送用户名和密码时,它会给出错误“没有打开警报”。请注意,只有先输入用户名和密码,然后单击“登录”进行授权,网站才会打开。我的浏览器是 chrome,版本:64,chrome 驱动程序版本是:2.38。这是我的代码:

public static void launchWebsite(String URL) {
        driver.get(URL);
        try {
            WebDriverWait wait = new WebDriverWait(driver, 2);
            wait.until(ExpectedConditions.alertIsPresent());
            Alert alert = driver.switchTo().alert();
            System.out.println(alert.getText());
           alert.sendKeys("website");
           alert.sendKeys("grren");

        } catch (Exception e) {
            System.out.println("No alertis present");
            //exception handling
        }
    }

标签: javaseleniumwebdriveralert

解决方案


driver.get("http://UserName:Password@Example.com");如果站点使用基本身份验证,应该可以解决问题。

特别提示:如果你的密码中有@,别忘了把那个bad boy换成a%40

如果您的身份验证服务器需要带有“domainuser”之类的域的用户名,您需要在 url 中添加双斜杠 /: //localdomain\user:password@example.com

编辑:

Chrome 59 已移除对 https://user:password@example.com URL 的支持。

从 selenium 3.4开始,您可以使用以下方法在IE 中处理它

WebDriverWait wait = new WebDriverWait(driver, 10);      
Alert alert = wait.until(ExpectedConditions.alertIsPresent());     
alert.authenticateUsing(new UserAndPassword(username, password));

有办法使用 Chrome 扩展来处理这个问题。更多解释可以在这里找到

或者

将您的 chrome 版本降级到 <59


推荐阅读