1.下載瀏覽器驅動,用的是Chrome,下載地址http://chromedriver.storage.googleapis.com/index.html,按對應瀏覽器版本號下載(沒找到用的106)
2.JDK與Eclipse之前已經安裝好,在Eclipse中新建Maven項目,在pom.xml中添加selenium- java的依賴。
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency>
3.新建測試類,添加測試代碼:
1 package com.java.selenium; 2 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Set; 6 import java.util.concurrent.TimeUnit; 7 import org.openqa.selenium.Alert; 8 import org.openqa.selenium.By; 9 import org.openqa.selenium.Cookie; 10 import org.openqa.selenium.JavascriptExecutor; 11 import org.openqa.selenium.WebDriver; 12 import org.openqa.selenium.WebElement; 13 import org.openqa.selenium.chrome.ChromeDriver; 14 import org.openqa.selenium.interactions.Actions; 15 import org.openqa.selenium.support.ui.ExpectedConditions; 16 import org.openqa.selenium.support.ui.Select; 17 import org.openqa.selenium.support.ui.WebDriverWait; 18 19 20 public class SeleniumTest { 21 22 public static void main(String[] args) { 23 // TODO Auto-generated method stub 24 System.setProperty("webdriver.chrome.driver","F:\\Java Software\\Selenium\\WebDriver\\chromedriver.exe");//下載的chromedriver位置 25 WebDriver driver = new ChromeDriver();//實例化ChromeDriver對象 26 String url="http://www.baidu.com/"; 27 driver.get(url);//打開指定網站 28 29 //找到id為kw的元素,輸入java+selenium 30 //driver.findElement(By.id("kw")).sendKeys("java+selenium"); 31 //點擊id為su的元素 32 //driver.findElement(By.id("su")).click(); 33 34 //隱式等待,針對頁面加載,一旦設置,這個隱式等待會在WebDriver對象實例的整個生命周期起作用, 35 //它不針對某一個元素,是全局元素等待,即在定位元素時,需要等待頁面全部元素加載完成, 36 //才會執行下一個語句。如果超出了設置時間的則拋出異常。 37 //driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 38 39 //顯示等待是等待指定元素設置的等待時間 推薦 40 WebElement we=new WebDriverWait(driver, 5).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id=\"qrcode\"]/div/div[2]"))); 41 42 //獲取瀏覽器當前網頁標題與地址 43 System.out.println(driver.getTitle()); 44 System.out.println(driver.getCurrentUrl()); 45 46 //獲取單個元素 47 WebElement element = driver.findElement(By.id("su")); 48 System.out.println("單個元素:"+element.getAttribute("class")); 49 50 //獲取多個元素 51 List<WebElement> eList = driver.findElements(By.tagName("input")); 52 for(WebElement e:eList) { 53 System.out.println("獲取多個元素:"+e.getAttribute("name")); 54 } 55 56 //css定位層級元素 57 WebElement e = driver.findElement(By.cssSelector("div.qrcode-text")); 58 List<WebElement> list = e.findElements(By.tagName("p")); 59 for (WebElement e1 : list) { 60 System.out.println("css定位層級元素:"+e1.getAttribute("class")); 61 } 62 //xpath定位層級元素 63 WebElement e2 = driver.findElement(By.xpath("//*[@id=\"qrcode\"]/div/div[2]")); 64 List<WebElement> list2 = e.findElements(By.tagName("p")); 65 for (WebElement e1 : list) { 66 System.out.println("xpath定位層級元素:"+e1.getAttribute("class")); 67 } 68 69 70 //獲取當前的窗口 71 String currentWindow = driver.getWindowHandle(); 72 System.out.println(currentWindow); 73 74 //獲取所有的窗口 75 Set<String> handles = driver.getWindowHandles(); 76 for(String s:handles) { 77 System.out.println(s); 78 } 79 80 //遍歷窗口 81 Iterator<String> iterator = handles.iterator(); 82 while(iterator.hasNext()) { 83 String next=iterator.next();//這里iterator.next()只能用一次,否則會產生越界 84 if (currentWindow.equals(next)) 85 continue; 86 //跳轉到彈出的窗口 87 WebDriver driver2 = driver.switchTo().window(next); 88 driver2.getTitle(); 89 90 } 91 92 //執行JS腳本 93 String jsString="alert('Hello')"; 94 try { 95 ((JavascriptExecutor)driver).executeScript(jsString); 96 } catch (Exception ex) { 97 //TODO Auto-generated catch block 98 ex.printStackTrace(); 99 } 100 101 //處理彈出框 102 Alert alert = driver.switchTo().alert(); 103 System.out.println(alert.getText()); 104 //alert.dismiss();//相當於點擊取消 105 alert.accept();//相當於點擊確認 106 //alert.sendKeys("testing");//輸入值,如果可以 107 108 109 //處理下拉列表 110 /* Select select = new Select(driver.findElement(By.id("select"))); 111 select.selectByIndex(1); 112 select.selectByValue("Value"); 113 select.selectByVisibleText("Text"); 114 //獲取下拉框的全部選項 115 List<WebElement> list3 = select.getOptions(); 116 for (WebElement webElement : list3) { 117 webElement.click();//點擊下拉框 118 }*/ 119 120 //處理cookie 121 //添加一個cookie 122 Cookie cookie = new Cookie("sessionId","DF2334DFSDFOIFDFD221131"); 123 driver.manage().addCookie(cookie); 124 125 //獲取cookie 126 Set<Cookie> cookieSet=driver.manage().getCookies(); 127 Iterator<Cookie> iteratorCookie = cookieSet.iterator(); 128 while(iteratorCookie.hasNext()) { 129 Cookie c= iteratorCookie.next(); 130 System.out.println(c.getName()); 131 System.out.println(c.getValue()); 132 } 133 134 //driver.manage().deleteAllCookies();刪除所有cookie 135 //driver.manage().deleteCookie(cookie);刪除cookie這個對象 136 //driver.manage().deleteCookieNamed("COOKIE");刪除name為COOKIE的cookie 137 138 //鼠標操作 139 Actions action = new Actions(driver) ; 140 //移動到元素上雙擊 加上perform()才生效 141 action.moveToElement(driver.findElement(By.xpath("//*[@id=\"su\"]"))).doubleClick().perform(); 142 //移動到元素上右擊 143 action.moveToElement(driver.findElement(By.cssSelector("input#kw"))).contextClick().perform(); 144 145 driver.quit();//退出瀏覽器 146 147 } 148 149 }