• selenium常见操作


    package example;  
          
        import org.openqa.selenium.By;  
        import org.openqa.selenium.WebDriver;  
        import org.openqa.selenium.WebElement;  
        import org.openqa.selenium.chrome.ChromeDriver;  
        import org.openqa.selenium.support.ui.ExpectedCondition;  
        import org.openqa.selenium.support.ui.WebDriverWait;  
          
        import util.Log;  
        import util.SeleniumUtil;  
          
        public class TestAllInOne {  
            public static final String BASE_URL = "http://www.baidu.com";  
          
            public static void main(String[] args) throws Exception {  
                System.setProperty("webdriver.chrome.driver", "E:/0down/selenium/chromedriver.exe");  
                  
                //打开firefox  
                ChromeDriver dr = new ChromeDriver();  
                  
                //访问页面  
                dr.get(BASE_URL);  
        //      dr.navigate().to(BASE_URL);//与dr.get()效果相同  
        //      dr.navigate().forward();//让浏览器前进一步  
        //      dr.navigate().back();//让浏览器后退一步  
                Log.Info(dr.getPageSource());  
                  
                //等待页面加载完毕,直到条件满足  
                (new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>() {  
                    public Boolean apply(WebDriver dr) {  
                        Log.Info("web driver wait...");  
                        int index = dr.getPageSource().indexOf("京ICP证030173号");  
                        if(index != -1){  
                            Log.Info("web driver wait, true...");  
                            return true;  
                        }else{  
                            Log.Info("web driver wait, false...");  
                            return false;  
                        }  
                    }  
                });  
                  
                //等待页面加载完毕,直到条件满足,一个while循环,也挺简单的吧  
                /*
                while(true){
                     Log.Info("wait for...");
                    int index = dr.getPageSource().indexOf("京ICP证030173号");
                    if(index != -1){
                        Log.Info("wait for, true...");
                        break;
                    }
                    Thread.sleep(1 * 1000);
                }*/  
                  
                //等待元素加载完成  
        //      (new WebDriverWait(dr, 10)).until(  
        //          ExpectedConditions.presenceOfElementLocated(By.id("kw"))  
        //      );  
                  
                //等待元素加载完成,并可点击  
        //      WebDriverWait wait = new WebDriverWait(dr, 10);  
        //      wait.until(ExpectedConditions.elementToBeClickable(By.id("su")));  
                  
                //全局性的影响,只要WebDriver不消失,每隔10秒检查元素是否加载完成,直到加载完成。  
        //      dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
        //      dr.get("http://somedomain/url_that_delays_loading");  
        //      dr.findElement(By.id("myDynamicElement"));  
                  
        //      WebElement we = dr.findElement(By.id("kw"));  
        //      we.sendKeys("selenium");  
        //      we.click();  
                  
        //      dr.findElement(By.id("元素id"));//最常用  
        //      dr.findElement(By.className("class名称"));//比较常用  
        //      dr.findElement(By.tagName("tag名称"));//比较常用  
        //      dr.findElement(By.cssSelector("css选择器"));//比较常用  
        //      dr.findElement(By.name("元素的name属性"));//比较常用  
        //      dr.findElement(By.linkText("超链接的内容"));//不常用  
        //      dr.findElement(By.partialLinkText("超链接的部分内容"));//不常用  
        //      dr.findElement(By.xpath("xpath表达式"));//不常用  
                  
                //1:用java从文本中读取jQuery,并用WebDriver加载jQuery  
                SeleniumUtil.LoadAndExecuteJQuery(dr);  
                //2:用WebDriver执行你写的jQuery代码,可以返回单个元素,也可以返回元素数组,或无返回值  
                //执行你的jQuery代码,既然能执行自已的jQuery代码,就能做任何事情了  
                dr.executeScript("$('#kw').val('selenium'); $('#kw').val($('#kw').val() + ' java');");  
                //也可以用WebDriver API进行页面元素的操作  
                WebElement el = dr.findElement(By.id("kw"));  
                el.sendKeys("selenium java");  
                dr.findElement(By.id("su")).click();  
                  
                //WebDriver专用的select下接框处理类  
                /*
                List<WebElement> elList = dr.findElements(By.tagName("select"));
                if(elList != null && elList.size() > 0){
                    Select select = new Select(elList.get(0));
                    select.deselectAll();
                    select.selectByVisibleText("Edam");
                    select.selectByIndex(1);
                    select.selectByValue("10010");
                }*/  
                  
                //window和frame的切换  
                /*
                dr.switchTo().window("xxName");
                dr.switchTo().frame("xxName");
                */  
                  
                //浏览器自带的alert弹出框的处理  
                /*
                Alert alert = dr.switchTo().alert();
                if(alert != null){
                    alert.accept();
                    alert.dismiss();
                    alert.sendKeys("collonn");
                }*/  
                  
                /*
                //用jQuery查找一个元素
                WebElement wea = (WebElement)dr.executeScript("return $('#kw').get(0);");
                //用jQuery查找一组元素
                List<WebElement> weaList = (List<WebElement>)dr.executeScript("return $('.stu_info').get();");
                //返回Boolean
                Boolean flagB = (Boolean)dr.executeScript("return true;");
                //返回Double
                Double flagD = (Double)dr.executeScript("return 12.12;");
                //返回Long
                Long flagL = (Long)dr.executeScript("return 123;");
                //返回String
                String flagS = (String)dr.executeScript("return 'collonn';");
                //返回String数组
                List<String> flagSs = (List<String>)dr.executeScript("var ary = ['a', 'b', 'c']; return ary;");
                */  
                  
                //保存网面截图  
                SeleniumUtil.TakeScreenshot(dr, null);  
                  
                //关闭浏览器  
                dr.quit();  
            }  
          
        } 

  • 相关阅读:
    [ExtJS5学习笔记]第十一节 Extjs5MVVM模式下系统登录实例
    PS 滤镜算法原理——曝光过度
    PS 滤镜算法原理 ——马赛克
    OpenCV——彩色图像转成灰度图像
    [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding
    【翻译】EXTJS 编码风格指南与实例
    【翻译】Ext JS最新技巧——2014-8-13
    [ExtJS5学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介
    [ExtJS5学习笔记]第八节 Extjs5的Ext.toolbar.Toolbar工具条组件及其应用
    [ExtJS5学习笔记]第七节 Extjs5的组件components及其模板事件方法学习
  • 原文地址:https://www.cnblogs.com/Mr-xiao/p/6993073.html
Copyright © 2020-2023  润新知