Java+Selenium自動化測試學習(一)


搭建項目環境基本流程

1、如果沒安裝jdk先安裝jdk,並配置好環境變量;

2、如果沒有安裝工具,安裝工具(Eclipse、IDEA)都可以;

3、安裝好之后將工具打開,就開始搭建項目環境;

4、在Eclipse中創建一個項目;

5、將下載的將selenium-java包導入到項目中;

6、環境搭建完成,可以寫一個簡單的流程測試一下,如下面代碼,先測試是否可以打開瀏覽器。

自動化測試基本流程

1、設置chromedriver的地址System.setProperty();

2、創建一個默認瀏覽器ChromeDriver driver = new ChromeDriver();

3、設置窗口屬性(自定義,比如:設置窗口大小);

4、在瀏覽器窗口加載新的網頁driver.get(url);

5、設置等待方式一般是顯示等待和隱式等待兩種;

6、定位元素;

7、退出瀏覽器。

package testLogin;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class LoginTest {
    public static void main(String[] args) throws Exception {
        //設置chromedriver的地址
        System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver.exe");
        //創建一個默認的瀏覽器
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();//窗口最大化
        String url = "";//寫入測試的地址
        driver.get(url);
        Thread.sleep(1000);
        //隱式等待,全局變量對頁面中所有元素設置加載時間,總共等待10秒, 如果10秒后,元素還不存在,就會拋出異常
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        //定位登錄界面元素
        //如果文本框中之前有值,先清空元素之前的值
        //手機號碼
        driver.findElement(By.ByCssSelector.cssSelector("input[type=\"text\"]")).clear();
        driver.findElement(By.ByCssSelector.cssSelector("input[type=\"text\"]")).sendKeys("15211111111");
        Thread.sleep(1000);
        //密碼   
        driver.findElement(By.ByCssSelector.cssSelector("input[type=\"password\"]")).clear();
        driver.findElement(By.ByCssSelector.cssSelector("input[type=\"password\"]")).sendKeys("111111");
        Thread.sleep(1000);
        //跳轉頁面要用click,submit不能跳轉只能提交,如果要用submit,后面還得在寫一邊click
        driver.findElement(By.ByCssSelector.cssSelector("button[type='button']")).click();
        Thread.sleep(1000);
        System.out.println("登錄成功,跳轉到首頁");
        //設置用戶信息,定位元素
        //姓名
        driver.findElement(By.ByXPath.xpath("//div[contains(@class,\"is-required\")][1]/div/div/input")).clear();
        driver.findElement(By.ByXPath.xpath("//div[contains(@class,\"is-required\")][1]/div/div/input")).sendKeys("haha");
        Thread.sleep(1000);
        //性別,單選框是個點擊事件,注意:這個路徑不是input標簽里面的radio,一般都是定位input里面的radio
        driver.findElement(By.ByXPath.xpath("//label[@role=\"radio\"][1]")).click();
        /**
         * 生日
         * 定位日期控件:
         *  1.日期控件中有readonly,通過js去掉readonly屬性
         *  2.定位元素,手動輸入日期
         *  3.這里多了一個屬性disabled,都要去掉
         */
        //通過js獲取屬性信息
        String jsScript = "document.getElementsByClassName('el-date-editor')[0].getElementsByTagName('input')[0].removeAttribute('readonly')";
        String jsScript1 = "document.getElementsByClassName('el-date-editor')[0].getElementsByTagName('input')[0].removeAttribute('disabled')";
        //執行js
        ((ChromeDriver) driver).executeScript(jsScript);
        ((ChromeDriver) driver).executeScript(jsScript1);
        driver.findElement(By.ByXPath.xpath("//div[contains(@class,'el-date-editor')]/input")).clear();
        driver.findElement(By.ByXPath.xpath("//div[contains(@class,'el-date-editor')]/input")).sendKeys("2020-01-13");
        //聯系電話
        Thread.sleep(3000);
        driver.findElement(By.ByXPath.xpath("//div[contains(@class,'is-required')][3]/div/div/input")).clear();
        driver.findElement(By.ByXPath.xpath("//div[contains(@class,'is-required')][3]/div/div/input")).sendKeys("12522222222");
        Thread.sleep(3000);
        /**
         * 下拉框
         * 注意:這里的下拉框不是select類型,而是用ul和li模擬的下拉框
         *       1、在定位下拉框時先輸入框點擊
         *       2、在定位下拉框點擊
         */
        driver.findElement(By.ByXPath.xpath("(//div[contains(@class,'el-select')]/div/input)[1]")).click();
        driver.findElement(By.ByXPath.xpath("//*[@class=\"el-select-dropdown__item\"][1]")).click();
        Thread.sleep(3000);
        driver.findElement(By.ByXPath.xpath("(//button[@type='button'])[1]")).click();
        System.out.println("基礎信息設置完成");
        driver.quit();//退出瀏覽器

    }
}


注:

1、如果雙引號中還有雙引號,可以自動轉義,或者加單引號。
  1、加單引號:"//button[@type='button'])[1]"
  2、轉義:"//div[contains(@class,\"is-required\"

2、三種等待方式。

3、不是select類型下拉框的定位方式(查看下拉框類型),我們的是ur\li寫的下拉框例如:

  1、先定位輸入框click,然后彈出下拉框;
  2、再定位下拉框中的元素click,最后的值賦值到輸入框中

4、點擊和提交:
  1、submit提交表單事件
  2、click響應事件。
  例如:在登錄時我用submit提交,未跳轉到首頁。使用click可以。

5、定位日期控件:日期控件一般都會有readonly或disable屬性,,然后在定位元素輸入日期。
  1、先用js代碼移除屬性document.getElementsByClassName("")[0].removeAttribute('readonly')
  2、然后在定位到元素使用sendkeys()方法輸入日期

6、兩種退出方式:
  1、close()關閉當前窗口,如果是當前打開的最后一個窗口,則退出瀏覽器
  2、quit()關閉所有關聯的窗口


免責聲明!

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



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