首页 > 解决方案 > 如果元素没有出现在selenium webdriver java中,如何重新加载页面

问题描述

有时由于超时或其他原因页面停止加载或被加载但注册页面没有出现,为了确保它出现我们必须刷新页面,我尝试了 driver.navigate.refresh(),我有尝试了显式等待和javascript执行程序,没有任何效果,我正在添加我尝试过的代码片段,但它也不起作用。一旦 findelement().isdisplayed 为假,我的脚本就会失败,它不会进入 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);
        }

标签: javaseleniumselenium-webdriver

解决方案


尝试替换:

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

和:

if(driver.findElements(byusername).size() > 0 && driver.findElements(byusername).get(0).isDisplayed())

这不会抛出异常,你可以去else声明。driver.findElements(byusername)返回找到的元素列表,如果没有找到元素,则仅返回一个空列表。


推荐阅读