51Testing软件测试论坛

标题: selenium的java问题 [打印本页]

作者: yk718    时间: 2014-8-20 15:09
标题: selenium的java问题
本帖最后由 yk718 于 2014-8-20 15:14 编辑

我想实现从数据库读取数据,读取后做相应操作。
但是每一个操作又可能失败,如元素未找到就失败了,失败后我想程序继续执行读取下一条数据,并继续执行操作。
目前情况是,如果中间有元素未找到,就停在那里了不继续往下执行了!!
  1. public void read(String url,String database,String table) throws SQLException{

  2.             con=DriverManager.getConnection("jdbc:mysql://192.168.5.155:3306/"+database+"","root","123456");
  3.             Statement statement =con.createStatement();
  4.             Statement statement1 =con.createStatement();
  5.             ResultSet result=statement.executeQuery("SELECT * FROM "+table+"");

  6.             while(result.next()){
  7.              String Step=Integer.toString(result.getInt("Step"));
  8.              String KeyWord=result.getString("KeyWord");
  9.              String Data=result.getString("Data");
  10.              String Object=result.getString("Object");
  11.              String Object_by=Object.split(";")[0].toString();
  12.              String Object_Desc=Object.split(";")[1].toString();
  13.              System.out.println("Step:"+Step);
  14.             
  15.              //******步骤关键字为input*******
  16.              if(KeyWord.equals("Input")){
  17.              //**对象为id
  18.              if(Object_by.equals("id")){
  19.              driver.findElement(By.id(Object_Desc)).sendKeys(Data);}
  20.              //**对象为xpath
  21.              else if(Object_by.equals("xpath")){
  22.              driver.findElement(By.xpath(Object_Desc)).sendKeys(Data);
  23.              }
  24.              }
  25.              //*******步骤关键字为Click*********
  26.              else if(KeyWord.equals("Click")){
  27.              //**对象为id
  28.              if(Object_by.equals("id")){
  29.              driver.findElement(By.id(Object_Desc)).click();
  30.              }
  31.              //**对象为xpath
  32.              else if(Object_by.equals("xpath")){
  33.              driver.findElement(By.xpath(Object_Desc)).click();
  34.              }
  35.              }
复制代码

作者: joykao    时间: 2014-8-21 09:25
元素找不到直接报错停止执行后续操作,个人觉得其实挺好的,当然你可以根据错误的情况加入一些异常的处理,但是你的问题貌似是数据驱动的问题。。

可以把你的每一行的数据当作一个完整的用例,你想要的是用例之间相互不要依赖。那其实你可以做的其实还有很多,你可以想象怎样实现数据剥离,实现参数化,通过每次传入不同的参数来实现。个人觉得你可以先把数据读出来然后用dataprovider传参。。。把 测试方法和读取数据的方法分开。
作者: yk718    时间: 2014-8-21 14:19
回复 2# joykao
通过添加异常处理机制,已经解决问题!
版主,我想要的确实是用例之间不要相互依赖,但一行数据只表示一个操作,也不要相互依赖!
至于参数化,目前还没有考虑,感觉我目前的框架不好再剥离数据出来了,求解!!
作者: joykao    时间: 2014-8-21 14:44
回复 3# yk718

你目前的数据都是存在数据库的是吧。。。个人觉得你还是可以剥离的呀。。就是你可以先拿出来数据再存在一个地方。。。然后这些数据再用作参数来用,这样其实就分开了,而且你也很容易就知道到底是哪里出错了,到底是数据库数据的问题还是测试代码的问题应该很明了了
作者: yk718    时间: 2014-8-21 15:08
回复 4# joykao
嗯,元素和数据都存在数据库!  原则上还是可以再剥离的,就是分表嘛!
只不过现在还没有参数化的需求的,后面应该会用到。
祝版主早日转正!!
作者: joykao    时间: 2014-8-21 15:22
回复 5# yk718


   
作者: jameswang1018    时间: 2014-8-22 15:25
建立一个自己的方法封装一下FindElement,在你自己的方法里catch NOSuchElementException异常就可以了。




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