I am getting nullpointer exception when I perform click() for the same WebElement which I have performed earlier in my Code

别说谁变了你拦得住时间么 提交于 2019-12-31 03:49:06

问题


I am getting some good handson on my Java ans Selenium. When I use the same "Input_Search_Box" Webelement to perform click method it throws a nullpointer exception. I have googled and tried few work around like adding Thread, adding Explicit wait but still no clue where i miss. Any suggestion would be greatly appreciated.

Here is my Code:

 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);      

    }   

    }

回答1:


If the page has changed/reloaded then you need to use find again.

Sometimes on user actions the page can trigger calls that can change the page that can change the state of the page and the current found objects are lost this can results in a stale element exception or null exception.



来源:https://stackoverflow.com/questions/39573231/i-am-getting-nullpointer-exception-when-i-perform-click-for-the-same-webelemen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!