首页 > 解决方案 > 如何避免过时的元素引用:当我使用命令更改页面时,元素未附加到页面文档

问题描述

我在使用 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();

标签: javaeclipseseleniumwebdriver

解决方案


我认为您需要显式等待:

代码 :

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);仅用于可视化目的。你可以删除它。这不是真的需要


推荐阅读