java - 如何避免过时的元素引用:当我使用命令更改页面时,元素未附加到页面文档
问题描述
我在使用 Ecpise 时遇到问题。当我使用命令做某件事时,我会进入另一个页面。例如,如果我执行不需要更改页面的命令,它就可以正常工作。但是当我做一个更改页面的操作时,它可以工作,但之后它会停止并且我得到那个错误。所以,有一部分代码。在意味着转到另一个页面的第三个命令之后,接下来的 2 个命令不起作用。
driver.get("https://mathaus.ro");
driver.manage().window().maximize();
driver.findElement(By.id("Constructii10NavNode")).click();
driver.findElement(By.id("changeLocationReference")).click();
driver.findElement(By.className("close-modal")).click();
解决方案
我认为您需要显式等待:
代码 :
driver.manage().window().maximize();
driver.get("https://mathaus.ro");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("Constructii10NavNode"))).click();
Thread.sleep(3000);
wait.until(ExpectedConditions.elementToBeClickable(By.id("changeLocationReference"))).click();
Thread.sleep(3000);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.close-modal"))).click();
Thread.sleep(3000);
PS: Thread.sleep(3000);
仅用于可视化目的。你可以删除它。这不是真的需要
推荐阅读
- python - TemplateDoesNotExist 在 /student/login/ ,尽管具有正确名称的模板退出
- javascript - 如何防止用户返回 react redux?
- visual-studio-code - 如何使用 VSCode 启动实时服务器
- java - Tomcat中的springboot循环依赖关系
- c# - 按项目列表中的字符串数组分组c#
- c++ - 我应该将什么变量名传递给我的函数进行排序?
- javascript - 什么是 .NET 标准类库的 Javascript 版本?
- php - loader-wizard.php?timeout=0&ini=0&page=loader_check
- javascript - 正则表达式:如何在忽略 HTML 标签的情况下获取 HTML 字符串中的最后一个单词?
- php - 从php中的对象数组中删除对象