java - 当我对我之前在代码中执行过的同一 WebElement 执行 click() 时,出现空指针异常

标签 java selenium nullpointerexception

我对 Java 和 Selenium 有了一些很好的实践。当我使用相同的“Input_Search_Box”Webelement 执行 click 方法时,它会引发空指针异常。我已经用谷歌搜索并尝试了一些解决方法,例如添加线程,添加显式等待,但仍然不知道我错过了哪里。任何建议将不胜感激。

这是我的代码:

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

    }   

    }

最佳答案

如果页面已更改/重新加载,那么您需要再次使用查找。

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

关于java - 当我对我之前在代码中执行过的同一 WebElement 执行 click() 时,出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39573231/

相关文章:

java - 我在理解面向对象 - java 时遇到问题

python - SessionNotCreatedException : Message: Unable to create new service: ChromeDriverService with Selenium 3. 14.0 和 Python 3.7.3

java - 空点异常...不知道为什么

selenium - 在 Internet Explorer 中运行 Selenium 的问题

java 。具有可能可抛出参数的函数(NullpointerException)?

java - 在 Arraylist 类中使用 .size() 时出现 NullPointerException

java - 制作模态 JInternalFrame

java - 在 Java 中将 Matlab 输出转换为 ArrayList

java - 如何在其父级中垂直居中 ImageView?

python - 通过 webdriver 点击 javascript 弹出窗口