1. 程式人生 > >java+selenium實現web自動化

java+selenium實現web自動化

1.環境搭建:

  eclipse4.8 + java1.8 + selenium-3.14 基本都是使用最新版

    (1) eclipse4.5下載:http://www.eclipse.org/downloads/ 

    (2) java8官方網站下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    (3) jdk安裝成功後,要配置環境變數

    (4) selenium各版本jar包下載地址

     http://selenium-release.storage.googleapis.com/index.html

          selenium需要的jar包:selenium-server-standalone-3.4.0.jar

     (5)      建立java project專案,把相關jar包引入

   需要下載瀏覽器對應的webDriver,放到D:\eclipse-workspace\java_Selenium_Demo1\lib\chromedriver.exe

   注意:webDriver必須與瀏覽器版本相對應,否則會出現問題。

   參考地址 : https://www.cnblogs.com/xiaozhaoboke/p/10107349.html

2.新建java工程 java_selenium_Demo1

  (1)新建lib(Folder)資料夾拷入所需驅動和jar包(並引入工程)

  

  (2)新建testCase用例

package test;

import java.util.concurrent.TimeUnit;
import java.util.Iterator;
import java.util.List; import java.util.Set; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.Cookie; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.Select; public class testCase { public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "D:\\eclipse-workspace\\java_Selenium_Demo1\\lib\\chromedriver.exe");// chromedriver驅動存放地址 WebDriver driver = new ChromeDriver(); // 新建一個WebDriver 的物件,但是new 的是谷歌的驅動 driver.manage().window().maximize(); //瀏覽器最大化 String url = "http://www.baidu.com"; driver.get(url); // 開啟指定的網站 //driver.navigate().to(url); // 開啟指定的網站 /* * * driver.findElement(By.id("kw")).sendKeys(new String[] { "hello" });// * 找到kw元素的id,然後輸入hello driver.findElement(By.id("su")).click(); // 點選按扭 */ try { /** * WebDriver自帶了一個智慧等待的方法。 driver.manage().timeouts().implicitlyWait(arg0, arg1); * Arg0:等待的時間長度,int 型別 ; Arg1:等待時間的單位 TimeUnit.SECONDS 一般用秒作為單位。 */ driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); } catch (Exception e) { e.printStackTrace(); } //獲取當前瀏覽器的資訊 System.out.println("Title:" + driver.getTitle()); System.out.println("currentUrl:" + driver.getCurrentUrl()); //執行js指令碼 String jString = "alert('給他彈出一個HelloWord')"; ((JavascriptExecutor) driver).executeScript(jString); // 處理alert框 System.out.println(driver.switchTo().alert().getText()); Thread.sleep(10); driver.switchTo().alert().accept(); //獲取單個元素 WebElement element = driver.findElement(By.id("wrapper")); System.out.println(element.getAttribute("class")); //獲取多個元素 List<WebElement> elList = driver.findElements(By.tagName("input")); for (WebElement e : elList) { System.out.println("獲取多個元素:"+e.getAttribute("name")); } //定位層級元素 WebElement e = driver.findElement(By.cssSelector("#qrcode-item qrcode-item-1")); List<WebElement> list = e.findElements(By.tagName("div")); for (WebElement e1 : list) { System.out.println("定位層級元素:"+e1.getAttribute("class")); } //獲取當前的視窗 String currentWindow = driver.getWindowHandle(); //獲取所有的視窗 Set<String> handles = driver.getWindowHandles(); //遍歷視窗 Iterator<String> iterator = handles.iterator(); while (iterator.hasNext()) { if (currentWindow == iterator.next()) continue; //跳轉到彈出的視窗 WebDriver driver2 = driver.switchTo().window(iterator.next()); driver2.getTitle(); } //處理彈出框 Alert alert = driver.switchTo().alert(); alert.getText(); alert.dismiss();//相當於點選取消 Alert confirm = driver.switchTo().alert(); confirm.getText(); confirm.accept();//相當於點選確認 Alert prompt = driver.switchTo().alert(); prompt.getText(); prompt.accept(); prompt.sendKeys("測試1");//輸入值 //處理下拉列表 Select select = new Select(driver.findElement(By.id("select"))); select.selectByIndex(1); select.selectByValue("西安"); select.selectByVisibleText("咸陽"); //獲取下拉框的全部選項 List<WebElement> list2 = select.getOptions(); for (WebElement webElement : list2) { webElement.click();//點選下拉框 } //處理cookie //新增一個cookie Cookie cookie = new Cookie("COOKIE", "NAME","D://COOKIES"); driver.manage().addCookie(cookie); //獲取cookies Set<Cookie> set = driver.manage().getCookies(); Iterator<Cookie> iterator2 = set.iterator(); while (iterator2.hasNext()) { Cookie c = iterator2.next(); c.getName(); c.getValue(); c.getPath(); } driver.manage().deleteAllCookies(); driver.manage().deleteCookie(cookie); driver.manage().deleteCookieNamed("COOKIE"); //等待載入完頁面 try { driver.manage().timeouts().wait(1); driver.manage().timeouts().implicitlyWait(1,TimeUnit.SECONDS);//等待介面載入完 } catch (InterruptedException e2) { e2.printStackTrace(); } //模擬滑鼠和鍵盤操作 Actions action = new Actions(driver); action.click(); action.dragAndDrop(element, e); action.sendKeys(element,"12222").perform(); action.click(element); action.keyDown(currentWindow); driver.quit();// 退出瀏覽器 /** * dr.quit()和dr.close()都可以退出瀏覽器,簡單的說一下兩者的區別:第一個close, * 如果打開了多個頁面是關不乾淨的,它只關閉當前的一個頁面。第二個quit, * 是退出了所有Webdriver所有的視窗,退的非常乾淨,所以推薦使用quit最為一個case退出的方法。 */ } }

 

參考總結原文地址:https://www.cnblogs.com/wmjone/p/9565596.html