You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome环境下使用alert.sendKeys触发"No Alert Open"错误求助

解决“No alert open”错误的方案

兄弟,你这问题的核心原因很明确——这个网站的登录界面是普通的HTML表单,根本不是浏览器原生的alert弹窗,你用Alert类的方法去操作当然会报错,因为页面上压根就没有alert存在呀!

给你整理好具体的修正步骤和代码:

正确的处理思路

你需要用Selenium的元素定位方法去操作页面上的输入框和按钮,而不是去切换alert:

  • 等待并定位用户名输入框,输入账号
  • 等待并定位密码输入框,输入密码
  • 等待并定位“Sign In”按钮,点击完成登录

修正后的代码示例

(注意:下面的定位器比如By.name("username")只是示例,你需要根据实际页面的元素属性调整,比如用id、xpath或者css选择器)

public static void launchWebsite(String URL) {
    driver.get(URL);
    try {
        // 把等待时间从2秒延长到10秒,避免页面加载慢导致元素找不到
        WebDriverWait wait = new WebDriverWait(driver, 10); 
        
        // 等待用户名输入框可见,输入账号
        WebElement usernameInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("username")));
        usernameInput.sendKeys("website");
        
        // 等待密码输入框可见,输入密码
        WebElement passwordInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("password")));
        passwordInput.sendKeys("grren");
        
        // 等待登录按钮可点击,完成登录
        WebElement signInBtn = wait.until(ExpectedConditions.elementToBeClickable(By.id("signin-btn")));
        signInBtn.click();
        
    } catch (Exception e) {
        System.out.println("登录过程出错: " + e.getMessage());
        e.printStackTrace();
    }
}

额外注意点

  1. 你原来设置的2秒等待时间太短了,网页加载需要时间,建议至少设置10秒;
  2. 定位元素时优先用id或name属性,没有的话再用xpath/css选择器,这样定位更稳定;
  3. Chrome 64和ChromeDriver 2.38的版本是兼容的,这个不用操心,问题完全出在操作逻辑上。

内容的提问来源于stack exchange,提问作者chris stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:26:44