• java+selenium实现web自动化


    1.环境搭建:

      eclipse4.8 + java1.8 + selenium-3.14 基本都是使用最新版

        (1) eclipse4.5下载:http://www.eclipse.org/downloads/ 

        (2) java8官方网站下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

        (3) jdk安装成功后,要配置环境变量

        (4) selenium各版本jar包下载地址

         http://selenium-release.storage.googleapis.com/index.html

              selenium需要的jar包:selenium-server-standalone-3.4.0.jar

         (5)      创建java project项目,把相关jar包引入

       需要下载浏览器对应的webDriver,放到D:eclipse-workspacejava_Selenium_Demo1libchromedriver.exe

       注意:webDriver必须与浏览器版本相对应,否则会出现问题。

       参考地址 : https://www.cnblogs.com/xiaozhaoboke/p/10107349.html

    2.新建java工程 java_selenium_Demo1

      (1)新建lib(Folder)文件夹拷入所需驱动和jar包(并引入工程)

      

      (2)新建testCase用例

    package test;
    
    import java.util.concurrent.TimeUnit;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.Cookie;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.interactions.Actions;
    import org.openqa.selenium.support.ui.Select;
    
    
    public class testCase {
    
        public static void main(String[] args) throws InterruptedException {
             System.setProperty("webdriver.chrome.driver", "D:\eclipse-workspace\java_Selenium_Demo1\lib\chromedriver.exe");// chromedriver驱动存放地址
                WebDriver driver = new ChromeDriver(); // 新建一个WebDriver 的对象,但是new 的是谷歌的驱动
                driver.manage().window().maximize();  //浏览器最大化
                String url = "http://www.baidu.com";
                driver.get(url); // 打开指定的网站
                
                //driver.navigate().to(url); // 打开指定的网站        
                
                /*
                 * 
                 * driver.findElement(By.id("kw")).sendKeys(new String[] { "hello" });//
                 * 找到kw元素的id,然后输入hello driver.findElement(By.id("su")).click(); // 点击按扭
                 */
                try {
                    /**
                     * WebDriver自带了一个智能等待的方法。 driver.manage().timeouts().implicitlyWait(arg0, arg1);
                     * Arg0:等待的时间长度,int 类型 ; Arg1:等待时间的单位 TimeUnit.SECONDS 一般用秒作为单位。
                     */
                    driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
              //获取当前浏览器的信息
                System.out.println("Title:" + driver.getTitle());
                System.out.println("currentUrl:" + driver.getCurrentUrl());
    
                //执行js脚本
                String jString = "alert('给他弹出一个HelloWord')";
                ((JavascriptExecutor) driver).executeScript(jString);
                
                // 处理alert框
                System.out.println(driver.switchTo().alert().getText());
                Thread.sleep(10);
                driver.switchTo().alert().accept();
    
    
                //获取单个元素
                WebElement element = driver.findElement(By.id("wrapper"));
                System.out.println(element.getAttribute("class"));
    
                //获取多个元素
                List<WebElement> elList = driver.findElements(By.tagName("input"));
                for (WebElement e : elList) {
                    System.out.println("获取多个元素:"+e.getAttribute("name"));
                }
                
                //定位层级元素
                WebElement e = driver.findElement(By.cssSelector("#qrcode-item qrcode-item-1"));
                List<WebElement> list = e.findElements(By.tagName("div"));
                for (WebElement e1 : list) {
                    System.out.println("定位层级元素:"+e1.getAttribute("class"));
                }
                
                
                //获取当前的窗口
                String currentWindow = driver.getWindowHandle();
                
                //获取所有的窗口
                Set<String>  handles = driver.getWindowHandles();
                
                //遍历窗口
                Iterator<String> iterator = handles.iterator();
                while (iterator.hasNext()) {
                    if (currentWindow == iterator.next())
                        continue;
                    //跳转到弹出的窗口
                    WebDriver driver2 = driver.switchTo().window(iterator.next());
                    driver2.getTitle();
                    
                }
                
                
                //处理弹出框
                Alert alert = driver.switchTo().alert();
                alert.getText();
                alert.dismiss();//相当于点击取消
                
                
                Alert confirm = driver.switchTo().alert();
                confirm.getText();
                confirm.accept();//相当于点击确认
                
                
                Alert prompt = driver.switchTo().alert();
                prompt.getText();
                prompt.accept();
                prompt.sendKeys("测试1");//输入值
                
                //处理下拉列表
                Select select = new Select(driver.findElement(By.id("select")));
                select.selectByIndex(1);
                select.selectByValue("西安");
                select.selectByVisibleText("咸阳");
                //获取下拉框的全部选项
                List<WebElement> list2 = select.getOptions();
                for (WebElement webElement : list2) {
                    webElement.click();//点击下拉框
                }
                
                //处理cookie
                //添加一个cookie
                Cookie cookie = new Cookie("COOKIE", "NAME","D://COOKIES");
                driver.manage().addCookie(cookie);
                
                //获取cookies
                Set<Cookie> set = driver.manage().getCookies();
                Iterator<Cookie> iterator2 = set.iterator();
                while (iterator2.hasNext()) {
                    Cookie c = iterator2.next();
                    c.getName();
                    c.getValue();
                    c.getPath();
                    
                }
                
                driver.manage().deleteAllCookies();
                driver.manage().deleteCookie(cookie);
                driver.manage().deleteCookieNamed("COOKIE");
                
                
                //等待加载完页面
                try {
                    driver.manage().timeouts().wait(1);
                    driver.manage().timeouts().implicitlyWait(1,TimeUnit.SECONDS);//等待界面加载完
                } catch (InterruptedException e2) {
                
                    e2.printStackTrace();
                }
                
                //模拟鼠标和键盘操作
                Actions action = new Actions(driver); 
                action.click();
                action.dragAndDrop(element, e);
                action.sendKeys(element,"12222").perform();
                action.click(element);
                action.keyDown(currentWindow);  
                
                
    
                driver.quit();// 退出浏览器
                /**
                 * dr.quit()和dr.close()都可以退出浏览器,简单的说一下两者的区别:第一个close,
                 * 如果打开了多个页面是关不干净的,它只关闭当前的一个页面。第二个quit,
                 * 是退出了所有Webdriver所有的窗口,退的非常干净,所以推荐使用quit最为一个case退出的方法。
                 */
                     
        }
    
    }

    参考总结原文地址:https://www.cnblogs.com/wmjone/p/9565596.html

  • 相关阅读:
    ABAP 动态内表构建 Dynamic internal table
    RFC权限分配
    ERP从业来的总结
    WORD中插入VISIO图形,打印乱码解决
    SAP中程序间的相互调用,SUBMIT关键字的用法
    SDva01的屏幕增强
    STL中的binder
    C++中的new
    C++数组中多态问题分析
    Gdiplus中实现双Buffer绘图
  • 原文地址:https://www.cnblogs.com/xiaozhaoboke/p/10107047.html
Copyright © 2020-2023  润新知