搭建項目環境基本流程
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()關閉所有關聯的窗口