当前位置: 首页 > 面试题库 >

当我对我之前在代码中执行的同一WebElement执行click()时,出现nullpointer异常

姚培
2023-03-14
问题内容

我在Java和Selenium上获得了一些不错的动手能力。当我使用相同的“ Input_Search_Box”
Webelement执行click方法时,它将引发nullpointer异常。我已经用谷歌搜索并尝试了一些解决方法,例如添加线程,添加显式等待,但仍然不知道我想念的地方。任何建议将不胜感激。

这是我的代码:

 public class Testclass {
    WebElement Input_Search_Box;
    WebDriver driver;
    @Test
    public void openBrowser() throws Exception{
        System.setProperty("webdriver.chrome.driver","E:\\Ecilpse\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://en.wikipedia.org/wiki/Main_Page");
        driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
        driver.manage().window().maximize();

        JavascriptExecutor jse = (JavascriptExecutor)driver;
        jse.executeScript("window.scrollBy(0,500)");

        WebElement Click_Create_Book = driver.findElement(By.xpath(".//*[@id='coll-create_a_book']/a"));
        Click_Create_Book.click();

        WebElement Start_Book_Creator_Btn = driver.findElement(By.xpath(".//*[@id='mw-content-text']/form/div/div[1]/button"));
    Start_Book_Creator_Btn.click();

    Input_Search_Box = driver.findElement(By.xpath(".//*[@id='searchInput']"));
        Input_Search_Box.click();
        Input_Search_Box.sendKeys("Selenium",Keys.ENTER);

    for(int i =0;i<=8;i++){
            try{

                if(driver.findElement(By.xpath(".//*[@id='siteNotice']/div[2]/div[2]/div")).isDisplayed())
                    break;
            }
    catch(Exception e){
                jse.executeScript("window.scrollBy(0,2500)");

    }
    }

    for(int j=0;j<=5;j++){

    if(driver.findElement(By.id("coll-add_article")).isDisplayed()) {
    System.out.println("If Executed");
    break;

    }else
    {

    WebElement Book_Remove = driver.findElement(By.xpath(".//*[@id='coll-remove_article']"));
                Book_Remove.click();

    }
    }

    WebElement Add_This_Book = driver.findElement(By.xpath(".//*[@id='coll-add_article']"));
    Add_This_Book.click();
    Thread.sleep(3000);

    for(int k =0;k<=6;k++){
    jse.executeScript("window.scrollBy(0,-2500)");
    Thread.sleep(3000);
    }


    Thread.sleep(4000);
    System.out.println("Sctipr on hold for 4k seconds");

    //Here is the Nullpointer error occuring
    Input_Search_Box.click();
    Input_SearchBox.sendKeys("JSCRIPT",Keys.ENTER);

    }

    }

问题答案:

如果页面已更改/重新加载,则需要再次使用find。

有时,在用户操作时,页面可能触发可以更改页面的调用,从而可以更改页面的状态,并且当前找到的对象丢失,这可能导致陈旧元素异常或null异常。



 类似资料:
  • 当我尝试编译代码时,我得到以下错误: 错误:任务“:app:DexDebug”执行失败。 为google location services/gcm使用了单独的api库,并删除了完整的play service库。这减少了可靠的库方法和错误得到了解决。

  • 我在下面的代码中的处获得了一个concurrentModificationException。我怎样才能避免这种情况呢? 这是stacktrace的顶部

  • 问题内容: 当我尝试在代码中执行HQL时,发生以下异常。我在各个站点中进行了检查,发现antlr.2.7.6.jar shd位于类路径中。我在项目中检查了此内容,发现在我的Maven依赖项中存在该内容。因此,不应有任何此类问题。但是我仍然遇到这个问题。谁能在这方面帮助我。我在“ empList = getHibernateTemplate()。find(“来自Employee”);“行中收到此错误

  • 我有一个活动,在应用程序第一次运行时弹出指令(在对话框片段中)。 我想在用户不关闭对话框的情况下停止代码的执行。 有可能做到吗??? 编辑:我尝试使用CountDownLatch,但它冻结了我的UI,并且没有显示对话框。 活动: } 对话框(我只列出了所需的方法): 公共类教程对话框扩展了DialogFragment{private final String TAG=getClass().getS

  • 在我的控制台中显示为以下错误 Appium服务器日志:

  • 在没有任何Java RMI经验的情况下,我有一个天真的问题,但在搜索互联网后仍然不确定答案。 问题: 对我来说,有两种情况: 场景1:从本地启动一个Java程序,在执行过程中,它从存储在远程机器上的类调用一个方法,然后该方法的类将下载到本地机器上,并继续执行。 场景2:从本地启动Java程序,在执行过程中,它从存储在远程机器上的类调用一个方法,然后该方法将在远程机器上执行,结果将发送回本地机器。(