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 }