昨天作個小任務,其中有一步須要執行重複操做,就是select下拉框中勾選option項而後提交。而後再勾選再提交。css
提交了幾回,過重複太有規律了,花半小時寫個代碼代替這種重複操做是否是更好。java
想好了,就開寫,雖然還有點小問題,但基本能夠代替部分重複工做了。web
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的等待時間的用法,好好看一下app