Selenium Java脚本无报错停止运行,地址建议栏相关代码异常如何解决?
问题根因
- 括号嵌套逻辑错误:你把菜系选择、
driver.quit()的代码全部写在了遍历地址建议列表suggestion的for循环内部:- 若地址输入后没有加载出建议列表,
suggestion为空,for循环不会执行,后续所有逻辑直接跳过,程序静默终止 - 若建议列表中没有匹配到目标地址,第一次循环执行结束就会直接触发
driver.quit()关掉浏览器,程序提前停止
- 若地址输入后没有加载出建议列表,
- 条件判断语句失效:第一个地址选择逻辑里的判断语句
if(suggests.getText().equalsIgnoreCase("Khalifa city"));末尾多写了分号,整个判断逻辑完全为空,不管文本是否匹配都会直接点击第一个搜索建议 - 等待与异常处理缺失:混用
Thread.sleep()和隐式等待,且没有添加异常捕获逻辑,元素未加载成功时程序直接中断,异常信息被吞导致无报错输出
你提到的移动代码位置后能正常运行,本质是代码移动后括号嵌套逻辑发生变化,driver.quit()不会被提前触发。
修复方案
- 调整代码括号嵌套结构,将菜系选择、
driver.quit()逻辑移出遍历地址建议的for循环 - 删除判断语句后多余的分号,保证条件判断逻辑生效
- 替换不稳定的
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
相关产品推荐
相关产品推荐

