Jay~ 发表于 2016-10-13 14:35:31

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:59

是不是考虑赋值是不是成功

若尘_51 发表于 2016-10-13 15:06:04

driver.findElement(By.name("userName")).sendKeys("username")变量不用引号的吧?

Jay~ 发表于 2016-10-13 16:25:49

jingzizx 发表于 2016-10-13 14:52
是不是考虑赋值是不是成功

成功了上一行加的System.out.println(username+","+realname+","+password+","+tel); 已经输出来了

Jay~ 发表于 2016-10-13 16:26:40

若尘_51 发表于 2016-10-13 15:06
driver.findElement(By.name("userName")).sendKeys("username")变量不用引号的吧?

是的没有引号,我写错了。但是还是不对

若尘_51 发表于 2016-10-13 16:36:59

Jay~ 发表于 2016-10-13 16:26
是的没有引号,我写错了。但是还是不对

附上完整一点的脚本看看~~

SunnyLan 发表于 2016-10-13 16:47:06

打断点debug跟一下,应该获取到空值,所有报空指针异常

Jay~ 发表于 2016-10-14 09:10:14

本帖最后由 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;
                                                      String realname = str;
                                                      String password = str;
                                                      String tel = str;
                                        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/div/input")).clear();
                   // driver.findElement(By.xpath(".//*[@id='customerForm']/div/div/div/div/div/div/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:19

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:57

先把引号取消。

Jay~ 发表于 2016-10-17 16:15:38

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:54

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

你的代码直接把形参当username当做字符串传进去了,肯定找不到,先定义一个变量接收传进去的参数,然后再By.name
页: [1]
查看完整版本: driver.findElement(By.name("userName")).sendKeys("username")