• Selenium WebDriver高级应用


    WebDriver高级应用

    public class Demo4 {
        
        WebDriver driver;
        
        // @BeforeMethod:在每个测试方法开始运行前执行
        @BeforeMethod  
        public void beforeMethod(){
            System.setProperty("webdriver.chrome.driver", "e:\chromedriver.exe");
            driver = new ChromeDriver();
        }
        
        // @AfterMethod:在每个测试方法开始运行结束后执行
        @AfterMethod 
        public void afterMethod(){
            driver.close();
        }
        
        
        /**
         * 使用JavaScriptExecutoru单击元素
         */
        @Test
        public void testDame(){
            driver.get("http://www.baidu.com");
            //找到百度首页的搜索输入框
            WebElement searchInbox = driver.findElement(By.id("kw"));
            //找到搜索按
            WebElement searchButton = driver.findElement(By.id("su"));
            //在输入框中输入字符
            searchInbox.sendKeys("selenium");
            //调用javaScriptClick方法单击按钮
            javaScriptClick(searchButton);
            
        }
        
        public void javaScriptClick(WebElement element){
            try {
                //判断传入的element元素是否为可单击状态,是否可见
                if(element.isEnabled() && element.isDisplayed()){
                    System.out.println("使用javascript进行页面元素的单击");
                    ((JavascriptExecutor) driver).executeScript("arguments[0].click();",element);
                }else {
                    System.out.println("页面上的元素无法进行单击操作");
                }
            } catch (NoSuchElementException e1) {
                System.out.println("页面元素没有附加在网页中");
                e1.printStackTrace();
            } catch (Exception e2) {
                System.out.println("无法完成单击操作");
                e2.printStackTrace();
            }
        }
        
        /**
         * 在Ajax方式产生的浮动框中,选择单击包含某些关键字的选项
         * @throws InterruptedException 
         */
        @Test
        public void testAjaxDemo() throws InterruptedException{
            driver.get("https://www.sogou.com");
            //找到搜索框
            WebElement searthInbox = driver.findElement(By.id("query"));
            searthInbox.click();
            Thread.sleep(2000);
            
            //将浮动的列表选项存list集合中
            List<WebElement> webElements = driver.findElements(By.xpath("//*[@id='vl']/div[1]/ul/li"));
            for(WebElement webElement : webElements){
                //判断是否包含关键字
                if(webElement.getText().contains("5月新规")){
                    System.out.println("............. "+ webElement.getText());
                    webElement.click();
                    Thread.sleep(3000);
                }
            }
            
        }
        
        //设置一个页面对象的属性值
        @Test
        public void testDemo() throws InterruptedException{
            driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/text.html");
            //获取到id为text的元素对象
            WebElement textElement = driver.findElement(By.id("text_test"));
            //调用setAttribute方法修改文本框的value属性值,改变文本框中的文字
            setAttribute(driver,textElement,"value","selenium");
            //修改文本框的size属性值
            setAttribute(driver, textElement, "size", "5");
            Thread.sleep(2000);
            //删除文本框的size属性值
            removeAttribute(driver, textElement, "size");
            Thread.sleep(3000);
        }
    
        //修改页面元素属性的方法
        private void setAttribute(WebDriver driver, WebElement textElement, String attributeName, String value) {
            JavascriptExecutor js = (JavascriptExecutor) driver;
            js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", textElement,attributeName,value);
        }
        
        //删除页面元素属性的方法
        private void removeAttribute(WebDriver driver, WebElement textElement, String attributeName) {
            JavascriptExecutor js = (JavascriptExecutor) driver;
            js.executeScript("arguments[0].removeAttribute(arguments[1])",textElement,attributeName);
        }
        
        /**
         * 在日期选择器上进行日期选择
         */
        @Test
        public void datepickerTest(){
            driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/text.html");
            //获取到日期控制元素对象
            WebElement datepicker = driver.findElement(By.xpath("//*[@id='d12']"));
            //datepicker.click();
            datepicker.sendKeys("2019-04-29");
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        
        /**
         * 高亮显示正在被操作的页面元素
         */
        @Test
        public void highLightTest(){
            driver.get("http://www.baidu.com");
            WebElement searchInbox = driver.findElement(By.id("kw"));
            WebElement submitButton = driver.findElement(By.id("su"));
            //调用高亮处理方法
            highLightElenment(searchInbox);
            searchInbox.sendKeys("selenium");
            highLightElenment(submitButton);
            submitButton.click();
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        //高亮处理元素对象
        private void highLightElenment(WebElement element) {
            JavascriptExecutor js = (JavascriptExecutor) driver;
            js.executeScript("arguments[0].setAttribute('style',arguments[1])", element,"background:yellow;solid:red;");
            
        }
        
        
        /**
         * 用例执行失败对屏幕进行截屏
         */
        public void screenTest(){
            
        }
    }
    /**
     * 自动下载文件
     * @author Administrator
     *
     */
    public class DownloadFiles {
        
        //指定文件下载地址
        static String downloadFilePath = "D:/download";
        WebDriver driver;
        JavascriptExecutor js;
        String url;
        
        @BeforeMethod
        public void beforeMethod(){
            url = "http://ftp.mozilla.org/pub/firefox/releases/35.0b8/win32/zh-CN/";
        }
        
    /*    @AfterMethod
        public void afterMethod(){
            driver.quit();
        }*/
        
        @Test
        public void download(){
            ChromeOptions options = downloadChromeFile();//更改默认下载路径
            driver = new ChromeDriver(options);
            driver.get(url);
            driver.findElement(By.partialLinkText("Stub")).click();
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        
        public static ChromeOptions downloadChromeFile(){
            ChromeOptions options = new ChromeOptions();
            //指定下载路径
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("profile.default_content_settings.popups", 0); 
            map.put("download.default_directory", downloadFilePath);
            options.setExperimentalOption("prefs", map);
            return options;
        }
    }
    public class Upload {
        
        @Test
        public void test(){
            System.setProperty("webdriver.chrome.driver", "e:\chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.get("file:///F:/workspace/selenium_demo/src/main/webapp/upload.html");
            driver.findElement(By.name("uploadFile")).sendKeys("C:\Users\Administrator\Desktop\IDEA快捷键.txt");
        }
    }
    /**
     * 滑动滚动条到屏幕中间
     * 滑动滚动条到指定元素位置
     * 按横纵坐票滑动屏幕
     * @author Administrator
     *
     */
    public class ScrollBar {
        
        WebDriver driver;
        String url;
        
        @BeforeMethod
        public void beforeMethod(){
            url="http://v.sogou.com";
            System.setProperty("webdriver.chrome.driver", "e:\chromedriver.exe");
            driver = new ChromeDriver();
            driver.get(url);
        }
        
        @AfterMethod
        public void afterMethod(){
            driver.quit();
        }
        
        //第一优先级执行测试用例
        @Test(priority=1)
        public void scrollBarToPage(){
            //将页面的滚动条滑动到屏幕的最下方
            ((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        //第二优先级执行测试用例
        @Test(priority=2)
        public void scrollBarToElemneTOfoPage(){
            //将页面的滚动条滑动到页面指定的元素位置 ... 电视剧栏位置
            WebElement element = driver.findElement(By.xpath("//*[@id='container']/div[2]/div[2]/div[2]/div[1]/h3/a"));
            ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element);
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        //第三优先级执行测试用例
        @Test(priority=3)
        public void position(){
            //按模纵坐标滑动屏幕
            ((JavascriptExecutor) driver).executeScript("window.scrollBy (0,800)");
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    JDBC MySQL 实例之 用户管理系统
    利用JDBC连接数据库(MySQL)
    CSS01
    HTML01
    GUI编程02
    GUI编程01
    名词解释
    Navicat MySQL安装
    Eclipse安装Web/JavaEE插件、Eclipse编写HTML代码
    Pascal输出星星
  • 原文地址:https://www.cnblogs.com/wakey/p/10863235.html
Copyright © 2020-2023  润新知