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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM