尝试编写一个selenium自动化测试,发现被测项目表单中的输入项过多,每次更改新的数据很麻烦,想实现用参数化的方式,但是不知道该如何实现,没有参与实战项目,不知道整体架构是什么样子的,自学中也只是小打小闹,在网上找了些资料,有的说封装,有的说利用文件获取方式,还有数据库啥的,本人真的很菜,看不懂,不能领会,而且基于java有些细节也是不懂。后来用CSV这种实现了,我也不知道完美的样子是什么,只是参照大神们的意见略更改了将就一下。
1、CSV实现
public void getCsv(WebDriver driver) { JavascriptExecutor driver_js=(JavascriptExecutor) driver; try { List<String> allString = new ArrayList<>(); BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\zq\\Desktop\\a.csv"));//读取文件 reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉 String line = null; while((line=reader.readLine())!=null){ String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分 String last = item[item.length-1];//取的csv中最后一列的数据 // int value = Integer.parseInt(last);//如果是数值,可以转化为数值 allString.add(last); //重新放入新的数组中,以便依次取参 } driver.findElement(By.id("preEndDateTime")).sendKeys(allString.get(0));//割接准备结束时间 driver.findElement(By.id("startDateTime")).sendKeys(allString.get(1));//正式割接开始时间 driver.findElement(By.id("endDateTime")).sendKeys(allString.get(2));//正式割接结束时间 driver.findElement(By.xpath("//*[@id=‘initBody‘]/div[1]/section[2]/div[1]/form/div[5]/input")).sendKeys(allString.get(3));//总接口人 driver.findElement(By.name("techLeader")).sendKeys(allString.get(4));//技术负责人 driver.findElement(By.name("companies")).sendKeys(allString.get(5));//割接参与单位 driver.findElement(By.xpath("//*[@id=‘initBody‘]/div[1]/section[2]/div[1]/form/div[11]/input")).sendKeys(allString.get(6));//会议名称 driver.findElement(By.name("meetingDate")).sendKeys(allString.get(7)); driver_js.executeScript("window.scrollTo(0,document.body.scrollHeight)"); driver.findElement(By.id("sealFile")).sendKeys(allString.get(8));//上传附件 driver.findElement(By.xpath("//*[@id=‘initBody‘]/div[1]/section[2]/div[1]/form/div[19]/div[1]/label[2]/img")).click(); Runtime.getRuntime().exec(allString.get(9)); } catch (Exception e) { e.printStackTrace(); } }
2、csv文件数据

原文:https://www.cnblogs.com/snailvsstar/p/10365142.html