如果元素不存在,如何重新加载页面';t出现在SeleniumWebDriverJava中

如果元素不存在,如何重新加载页面';t出现在SeleniumWebDriverJava中,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,有时由于超时或其他原因,页面停止加载或被加载,但注册页面没有出现,为了确保我们必须刷新页面,我尝试了driver.navigate.refresh(),我尝试了显式等待和javascript executor,没有任何效果,我正在添加我尝试的代码片段,但它也不起作用。 一旦findelement().isdisplayed为false,我的脚本就会失败,它不会进入if循环。 下面是代码- for(int i=0;i<3;i++) { System.out.pr

有时由于超时或其他原因,页面停止加载或被加载,但注册页面没有出现,为了确保我们必须刷新页面,我尝试了driver.navigate.refresh(),我尝试了显式等待和javascript executor,没有任何效果,我正在添加我尝试的代码片段,但它也不起作用。 一旦findelement().isdisplayed为false,我的脚本就会失败,它不会进入if循环。 下面是代码-

for(int i=0;i<3;i++)
    {   
        System.out.println("In for loop");
        try
        {
        if(driver.findElement(byusername).isDisplayed())
        {
            System.out.println("Element found");
            driver.findElement(byusername).sendKeys(username);
            driver.findElement(bypassword).sendKeys(password);
            driver.findElement(signIn).click();
            System.out.println("Logged in");
            basewait.until( ExpectedConditions.presenceOfElementLocated(Tab));
            System.out.println("Wait completed, going to base class");
            i=3;
        }
        else
        {
            System.out.println("Element not found"+i+" try");
            driver.navigate().refresh();
            driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
            i++;
        }
        }
        catch(NoSuchElementException e)
        {
            System.out.println(e);
        }
for(int i=0;i尝试替换:

if(driver.findElement(byusername).isDisplayed())
与:


这不会引发异常,您可以转到
else
语句。
driver.findElements(按用户名)
返回找到的元素列表,如果没有找到任何元素,则返回一个空列表。

首先,请注意,隐式等待只需要在web驱动程序实例化后设置一次,除非出于任何原因,您希望稍后更改该设置的超时值

其次,尝试使用下面的代码等待页面完成加载

/**
 * Wait for the web page to finish loading
 */
public void waitForPageToLoad() {

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(new ExpectedCondition<Boolean>() {

        public Boolean apply(WebDriver wdriver) {
            return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
        }
    });
}
/**
*等待网页完成加载
*/
public void waitForPageToLoad(){
WebDriverWait wait=新的WebDriverWait(驱动程序,10);
等待.直到(新的ExpectedCondition(){
公共布尔应用(WebDriver wdriver){
return((JavascriptExecutor)driver.executeScript(“return document.readyState”).equals(“complete”);
}
});
}

当元素未显示时,您会遇到什么错误?这有助于我的基类在数组为空时重新加载页面,谢谢。
/**
 * Wait for the web page to finish loading
 */
public void waitForPageToLoad() {

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(new ExpectedCondition<Boolean>() {

        public Boolean apply(WebDriver wdriver) {
            return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
        }
    });
}