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

Selenium Java脚本无报错停止运行,地址建议栏相关代码异常如何解决?

问题根因
  • 括号嵌套逻辑错误:你把菜系选择、driver.quit()的代码全部写在了遍历地址建议列表suggestion的for循环内部:
    • 若地址输入后没有加载出建议列表,suggestion为空,for循环不会执行,后续所有逻辑直接跳过,程序静默终止
    • 若建议列表中没有匹配到目标地址,第一次循环执行结束就会直接触发driver.quit()关掉浏览器,程序提前停止
  • 条件判断语句失效:第一个地址选择逻辑里的判断语句if(suggests.getText().equalsIgnoreCase("Khalifa city"));末尾多写了分号,整个判断逻辑完全为空,不管文本是否匹配都会直接点击第一个搜索建议
  • 等待与异常处理缺失:混用Thread.sleep()和隐式等待,且没有添加异常捕获逻辑,元素未加载成功时程序直接中断,异常信息被吞导致无报错输出

你提到的移动代码位置后能正常运行,本质是代码移动后括号嵌套逻辑发生变化,driver.quit()不会被提前触发。

修复方案
  1. 调整代码括号嵌套结构,将菜系选择、driver.quit()逻辑移出遍历地址建议的for循环
  2. 删除判断语句后多余的分号,保证条件判断逻辑生效
  3. 替换不稳定的Thread.sleep()为显式等待,添加异常捕获逻辑打印报错信息
修正后核心代码片段
// 省略前面登录等已有逻辑
driver.findElement(By.xpath("//input[@id='contact_person_name']")).sendKeys("Faizan");
driver.findElement(By.xpath("//input[@id='password']")).sendKeys("123456");

//adding address and select from the suggestion bar here I'm selecting with ID
driver.findElement(By.id("entityAddress_0")).sendKeys("Khalifa city sector 13");
// 替换固定等待为显式等待,等待地址建议加载
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("pac-item")));

List<WebElement> suggestion = driver.findElements(By.className("pac-item"));
for (WebElement suggest : suggestion) {
    if(suggest.getText().equalsIgnoreCase("Sector 13Khalifa City - Abu Dhabi - United Arab Emirates")) {
        suggest.click();
        break;
    }
}
// 菜系选择逻辑移出循环
WebElement element1 = driver.findElement(By.xpath("//select[@id='primary_cuisine']"));
Select sel = new Select(element1);
sel.selectByVisibleText("fxn1");

// 浏览器退出放在最后
driver.quit();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:48:00