51Testing软件测试论坛

标题: driver.findElement(By.name("userName")).sendKeys("username") [打印本页]

作者: Jay~    时间: 2016-10-13 14:35
标题: driver.findElement(By.name("userName")).sendKeys("username")
driver.findElement(By.name("userName")).sendKeys("username")

给sendKeys("username");传参数username="lulu"  但是总是执行不过去呀,报空指针,By.name("userName"),但是当我不传参数的时候是可以找到的呀,这个怎么回事呢,难道这个方法不可以传参数吗??求大神指导
作者: jingzizx    时间: 2016-10-13 14:52
是不是考虑赋值是不是成功
作者: 若尘_51    时间: 2016-10-13 15:06
driver.findElement(By.name("userName")).sendKeys("username")  变量不用引号的吧?
作者: Jay~    时间: 2016-10-13 16:25
jingzizx 发表于 2016-10-13 14:52
是不是考虑赋值是不是成功

成功了  上一行加的System.out.println(username+","+realname+","+password+","+tel); 已经输出来了
作者: Jay~    时间: 2016-10-13 16:26
若尘_51 发表于 2016-10-13 15:06
driver.findElement(By.name("userName")).sendKeys("username")  变量不用引号的吧?

是的  没有引号,我写错了。但是还是不对
作者: 若尘_51    时间: 2016-10-13 16:36
Jay~ 发表于 2016-10-13 16:26
是的  没有引号,我写错了。但是还是不对

附上完整一点的脚本看看~~
作者: SunnyLan    时间: 2016-10-13 16:47
打断点debug跟一下,应该获取到空值,所有报空指针异常
作者: Jay~    时间: 2016-10-14 09:10
本帖最后由 Jay~ 于 2016-10-14 09:13 编辑
若尘_51 发表于 2016-10-13 16:36
附上完整一点的脚本看看~~

        try {
                                        for(int i=0;i<row;i++)        {
                                                String[] str = (String[]) list.get(i);
                                                        String username = str[0];
                                                        String realname = str[1];
                                                        String password = str[2];
                                                        String tel = str[3];
                                        Newcustomer cus = new Newcustomer();
                                        cus.newcust(username,realname,password,tel);
                                    
                                        }        
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
               
                if(stream != null){
                        stream.close();                        
                }




public void newcust(String username,String realname,String password,String tel) throws Exception {
                        
System.out.println( driver.findElement(By.name("realName")));  这里就报空指针了 这是48行
                    driver.findElement(By.name("realName")).clear();
                    driver.findElement(By.name("realName")).sendKeys(realname);
                   // driver.findElement(By.xpath(".//*[@id='customerForm']/div/div/div/div/div/div[1]/div/input")).clear();
                   // driver.findElement(By.xpath(".//*[@id='customerForm']/div/div/div/div/div/div[1]/div/input")).sendKeys(realname);
                    driver.findElement(By.name("userName")).clear();
                    driver.findElement(By.name("userName")).sendKeys(username);
        
                    driver.findElement(By.name("password")).clear();
                    driver.findElement(By.name("password")).sendKeys(password);
                  
                    driver.findElement(By.name("mobile")).clear();
                    driver.findElement(By.name("mobile")).sendKeys(tel);
                  
                    driver.findElement(By.id("customerFormBtn")).click();
          }










下面是报的错


java.lang.NullPointerException
        at com.abczww.hs.demo.Newcustomer.newcust(Newcustomer.java:48)  
        at com.abczww.hs.demo.ExcelWorkBook.readExcel(ExcelWorkBook.java:80)
        at com.abczww.hs.demo.Newcustomer.test1(Newcustomer.java:41)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)


作者: alchaochao    时间: 2016-10-15 21:41
System.out.println( driver.findElement(By.name("realName")));   改成
String realname = realName;
System.out.println( driver.findElement(By.name(relaname)));
作者: ht还挺好听    时间: 2016-10-15 22:59
先把引号取消。
作者: Jay~    时间: 2016-10-17 16:15
alchaochao 发表于 2016-10-15 21:41
System.out.println( driver.findElement(By.name("realName")));   改成
String realname = realName;  ...

你这个写法是什么意思  。。。。。
realName 是web端的 name=realName  如果改成你这样肯定报错 完全找不到
作者: alchaochao    时间: 2016-10-17 16:49
Jay~ 发表于 2016-10-17 16:15
你这个写法是什么意思  。。。。。
realName 是web端的 name=realName  如果改成你这样肯定报错 完全找 ...

你的代码直接把形参当username当做字符串传进去了,肯定找不到,先定义一个变量接收传进去的参数,然后再By.name




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2