文档章节

0605 代替重复操作的小代码

木子木
 木子木
发布于 2014/06/05 11:41
字数 387
阅读 22
收藏 0

昨天做个小任务,其中有一步需要执行重复操作,就是select下拉框中勾选option项然后提交。然后再勾选再提交。

提交了几次,太重复太有规律了,花半小时写个代码代替这种重复操作是不是更好。

想好了,就开写,虽然还有点小问题,但基本可以代替部分重复工作了。

package MonitorTest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class MonitorTest {
 public static void main(String[] args) throws InterruptedException, IOException{
  //存储监控 名称的文件地址
  String fileUrl="D:\\bukejian\\tmp.txt";
  //访问地址
  String url=;
  ArrayList<String> list = new ArrayList<String>();
  String encoding="GBK";
  
  File file = new File(fileUrl);
  if(file.isFile() && file.exists()){
            InputStreamReader read = new InputStreamReader(
            new FileInputStream(file),encoding);
            BufferedReader bufferedReader = new BufferedReader(read);
            String lineTxt = null;
            while((lineTxt = bufferedReader.readLine()) != null){  
             list.add(lineTxt);
            }
            read.close();
         }else{
          System.out.println("No exist");
         }       
  
  System.setProperty("webdriver.firefox.bin", "D:/bukejian/Mozilla Firefox/firefox.exe");
  WebDriver dr = new FirefoxDriver(); 
  dr.get(url);
  WebElement submit=(new WebDriverWait(dr,10)).until(new ExpectedCondition<WebElement>(){
      @Override
      public WebElement apply(WebDriver d){
       return d.findElement(By.cssSelector("input[type=\"submit\"]"));
      }
     });
  dr.findElement(By.name("login_username")).clear();
  Thread.sleep(1000);
  dr.findElement(By.name("login_username")).sendKeys("bukejian");
  Thread.sleep(1000);
  dr.findElement(By.name("login_password")).clear();
  dr.findElement(By.name("login_password")).sendKeys("bukejian");
  submit.click();
  

  Thread.sleep(5000);
  for(String a :list){

   WebElement add=(new WebDriverWait(dr,10)).until(new ExpectedCondition<WebElement>(){
       @Override
       public WebElement apply(WebDriver d){
        return d.findElement(By.linkText("Add"));
       }
      });

   add.click();
   
   WebElement select=(new WebDriverWait(dr,10)).until(new ExpectedCondition<WebElement>(){
       @Override
       public WebElement apply(WebDriver d){
        return d.findElement(By.name("type_select"));
       }
      });
   
   new Select(dr.findElement(By.name("type_select"))).selectByVisibleText("Graph");
      new Select(dr.findElement(By.id("local_graph_id"))).selectByVisibleText(a);
      dr.findElement(By.cssSelector("input[type=\"submit\"]")).click();//提交  
  }
  dr.close();  
 }
}

代码还是有些问题,好像出自等待时间上面,一直不太懂selenium的等待时间的用法,好好看一下

© 著作权归作者所有

共有 人打赏支持
木子木

木子木

粉丝 5
博文 37
码字总数 7425
作品 0
朝阳
私信 提问
ctrl+c,ctrl+d,ctrl+z在linux中意义

linux下: ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。 ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。 ctrl-d 不是发送信号,...

飞龙栖息地
2011/08/23
0
0
mac支持NVDANV顯卡型號持列表

NVDANV50Hal.kext 文件中的ID 找到的设备ID 显卡型号 0x019010de&0xfff0ffff 0193 GeForce 8800 GTS 0194 GeForce 8800 Ultra 0191 GeForce 8800 GTX 0x040010de&0xfff0ffff 0400 GeForce 8......

Hackintosh
2013/01/15
0
0
资源分享

分享链接 iOS开发系列--音频播放、录音、视频播放、拍照、视频录制的详细说明,包括框架等: http://www.cnblogs.com/kenshincui/p/4186022.html - autoid-0-0-0 求职大课堂之面试篇丨如何回...

卡奇匠
2016/07/26
35
0
golang进阶(五)——restful开发的json处理

前言 restful开发时,对象转json,json转对象是非常频繁的操作,怎么样才能少些重复的代码呢,以这个为目的开启这篇文章 所有代码放在github上 简化数据结构 每次需要返回的数据有code,msg,...

lastsweetop
2017/10/31
0
0
Powershell下使用Search-mailbox删除邮件

运行环境Exchange 2013/2016 首先把搜索的结果保存到一个邮箱中作为备份,好处是通过search-mailbox误删除之后可以方便恢复,命令如下。 为了精确找到要删除的邮件,在遇到需要模糊搜索的场景...

zengchuixin2008
2018/01/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

HTTP状态码对照表(HTTP response codes)

由于博主工作最近在做大数据日志分析的时候,用到了很多http状态码相关的知识。博主基本只记得其中200和404两个,所以,在此做个笔录。 当浏览者访问一个网页时,浏览者的浏览器会向网页所在...

em_aaron
11分钟前
0
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
22分钟前
0
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
48分钟前
0
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
59分钟前
0
0
协议简史:如何学习网络协议?

大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应。并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背。 考试的时候,果然遇到这个问题,搜索枯肠,只能想...

Java干货分享
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部