Java+Selenium+Eclipse+Maven环境搭建

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 }

猜你喜欢

转载自www.cnblogs.com/nevereverever/p/12535932.html
今日推荐