【发布时间】:2020-10-07 15:38:29
【问题描述】:
我正在使用 selenium 进行自动化,但得到的结果不一致。如果有 10 个重复任务要执行,大约 6-8 个按预期运行,大约 2-3 个失败,此问题的主要原因是元素陈旧或无法在网页上找到该元素
我已经尝试了 chrome 浏览器的多种设置
driver = new ChromeDriver(cop);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(4, TimeUnit.SECONDS);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("estblshmntSel")));
dropdown = new Select(driver.findElement(By.id("estblshmntSel")));
错误信息 设置建立paramsstale元素引用:元素未附加到页面文档 (会话信息:chrome=84.0.4147.125) (驱动程序信息:chromedriver=84.0.4147.30 (48b3e868b4cc0aa7e8149519690b6f6949e110a8-refs/branch-heads/4147@{#310}),platform=Windows NT 10.0.14393 x86_64)(警告:服务器未提供任何堆栈跟踪信息)
【问题讨论】:
-
DOM 可能仍在更新...可能会将项目附加到您尝试使用的选择中。您可以添加一个普通的旧睡眠,或者对有时会产生陈旧元素异常的调用进行函数化,然后尝试/捕获驱动程序调用。当捕获到过时元素异常时,您将重新运行该函数。 (陈旧元素异常非常适合了解 DOM 何时仍在更新……因此您可以重新抓取元素。)
标签: java angular selenium selenium-chromedriver