Selenium webdriver在函数中使用时无法识别元素

时间:2013-10-04 06:10:00

标签: java excel selenium webdriver

我正在尝试使用函数登录gmail。我从excel表中传递用户名。问题是我的代码返回值但没有在文本框中输入。只是返回null异常,它不会抛出任何错误。

请帮助我,我是selenium webdriver的新手,并且真的不知道接下来要做什么,因为它没有显示任何错误。

public class gmail 
 {

public static WebDriver driver;

       public static void main(String[] args) throws IOException, InterruptedException 
{
    File file1 = new      File("C:\\Selenium\\IEDriverServer_Win32_2.35.3\\IEDriverServer.exe"); 
  System.setProperty("webdriver.ie.driver", file1.getAbsolutePath());
  WebDriver driver = new InternetExplorerDriver();
  driver.get("www.gmail.com");    



      FileInputStream file = new FileInputStream(new File("D:\\Automation\\Selenium\\New Folder\\Demo\\Book2.xls"));   // Path of the excel where the keywords and data was mentioned
      HSSFWorkbook workbook = new HSSFWorkbook(file);    
      HSSFSheet sheet = workbook.getSheetAt(0);
      int d= sheet.getLastRowNum();
      System.out.println(d);   


     for (int i=1;i<=d;i++)
      {
           Cell cell1=null;
            cell1=sheet.getRow(i).getCell(0);
            System.out.println(cell1);

            if (cell1.getStringCellValue().contains("text"))      
            {
                  Cell cell2=null;
                  cell2=sheet.getRow(i).getCell(1);
                  System.out.println(cell2);
                  stg(cell2);   //calling function                 

            }    

      }     

}  

public static void stg(Cell cell2) throws InterruptedException 
{
  WebElement un1=driver.findElement(By.name("Email"));
  System.out.println(un1);
  un1.sendKeys(cell2.getStringCellValue());

 }

}

 //This is the Output which i am getting:
 1
text

seltest10j

  Exception in thread "main" java.lang.NullPointerException
at Excel.gmail.stg(gmail.java:63)
at Excel.gmail.main(gmail.java:53)

2 个答案:

答案 0 :(得分:0)

似乎您没有将课程字段driver初始化:

public static WebDriver driver;

同时,您在main方法中声明了一个名为的本地变量:

WebDriver driver = new InternetExplorerDriver();

代码工作时stg方法中的代码是否在main内?这将起作用,因为本地变量实际上已初始化。当你将代码移到main之外时,局部变量不再隐藏类字段,因为你没有初始化它,你会得到一个NullPointerException。

请参阅this以了解有关字段和本地变量的详情,并this了解有关隐藏字段的信息。

答案 1 :(得分:0)

我强烈建议不要使用Selenium自动化Gmail。它非常复杂,你应该专注于自动化你的OWN应用程序而不是gmail。使用gmail POP3服务器检索电子邮件等。以下是类似question的答案。