HTML前端:webdriver总结

作者: 果芽软件 | 来源:发表于2017-11-28 10:02 被阅读364次

    一、依赖jar包

            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>2.50.0</version>
            </dependency>
    

    一、启动浏览器

    1. 支持浏览器种类

    驱动名称 操作系统 webriver实现类
    HtmlUnit Driver All org.openqa.selenium.htmlunit.HtmlUnitDriver
    Firefox Driver All org.openqa.selenium.firefox.FirefoxDriver
    Internet Explorer Driver Windows org.openqa.selenium.ie.InternetExplorerDriver
    Chrome Driver All org.openqa.selenium.chrome.ChromeDriver

    2. 打开浏览器

    打开firefox浏览器:
    WebDriver driver = new FirefoxDriver(); 
    
    打开IE浏览器
    WebDriver driver = new InternetExplorerDriver ();
    
    打开HtmlUnit浏览器
    WebDriverdriver = new HtmlUnitDriver(); 
    
    打开chrome浏览器
    WebDriverdriver = new ChromeDriver();
    

    3. firefox

    //启动默认安装路径下的ff
        public void StartFireFoxByDefault(){
            System.out.println("start firefox browser...");
            WebDriver driver = new FirefoxDriver();      //直接new一个FirefoxDriver即可
            Navigation navigation = driver.navigate();
            navigation.to("http://www.baidu.com/");
            System.out.println("start firefox browser succeed...");        
        }
    

    4. chrome

    public static void StartChrome(){
            System.out.println("启动chrome浏览器...");  
            //指定驱动路径      
            System.setProperty("webdriver.chrome.driver", "files\\chromedriver.exe");  
            WebDriver driver = new ChromeDriver();
            driver.get("http://www.baidu.com/");
            System.out.println("启动chrome浏览器成功...");        
        }
    

    5. 启动IE

    public static void StartIE(){
            System.out.println("start firefox browser...");        
            System.setProperty("webdriver.ie.driver", "files\\IEDriverServer.exe");
            WebDriver driver = new InternetExplorerDriver();
            driver.get("http://www.baidu.com/");
            System.out.println("start firefox browser succeed...");        
        }
    

    二、打开网页

    1. 打开界面

    driver.navigate().to( "http://www.example.com" );
    或
    driver.get( "http://www.example.com" );
    

    navigate().to()和get()功能完全一样。

    2. 新界面、前进、后退和刷新

    driver.navigate().to("要打开的新地址");
    driver.navigate().forward();
    driver.navigate().back();
    driver.navigate().refresh();
    

    写好driver.navigate()后,输入"."查看可选方法列表(剔除object的方法)


    image.png

    二、元素定位

    1. 测试例子

    <input class="input_class" type="text" name="passwd" id="passwd-id" /> 
    

    2. By.id:

    WebElement element = driver.findElement(By.id("passwd-id"));
    

    3. By.name:

    WebElement element = driver.findElement(By.name("passwd"));
    

    4. By.className

    WebElement element = driver.findElement(By.className("input_class"));
    

    5. By.cssSelector

    ## '':标签选择器
    WebElement element = driver.findElement(By.cssSelector("input"));
    ## '#':id选择器
    WebElement element = driver.findElement(By.cssSelector("#passwd-id"));
    ## '.':class选择器
    WebElement element = driver.findElement(By.cssSelector(".input_class"));
    ## '[id=passwd-id]':属性选择器
    WebElement element = driver.findElement(By.cssSelector(".input_class"));
    

    6. By.xpath:

    WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']")); 
    

    6. By.linkText:

    //通俗点就是精确查询
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.baidu.com/"); 
    WebElement element = driver.findElement(By.linkText("百科"));
    

    7. By.partialLinkText:

    //这个方法就是模糊查询
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.baidu.com/"); 
    WebElement element = driver.findElement(By.partialLinkText("hao"));
    

    三、XPATH语法

    1. xpath插件

    1. 下载chrome的xpath插件
    2. 添加到chrome的扩展区(拖进去就行)


      image.png
    3. 使用xpath插件,shift选择元素,自动生成xpath值


      image.png

    2. xpath常用符号:

    符号 含义 示例
    / 表示绝对路径绝对路径是指从根目录开始
    // 表示相对路径
    . 表示当前层
    .. 表示上一层
    * 表示通配符
    @ 表示属性,多个用and或or
    [] 属性的判断条件表达式

    3. xpath常用函数:

    函数名 示例 用途
    contains () //div[contains(@id,'widget')] 选择id属性中包含'widget'的div
    text() //a[text()='hello world'] 选择文本值为'hello world'的节点
    last() 选择最后一个
    starts-with() //div[starts-with(@id,'common')] 选择id属性中’common’开头的div节点
    not() 否定

    三、基本元素操作

    1. 文件上传

            WebElement load = this.locateElementByXpath(locator);
            load.sendKeys(path);
    

    2. 按钮

            WebElement submit = this.locateElementByXpath(locator);
            submit.click();
            submit.isEnabled();
    

    3. 选择框

    按下标选

    WebElement element = this.locateElementByXpath(locator);
            Select select = new Select(element);
            select.selectByIndex(index);  
    

    4. 输入框

            WebElement input = this.locateElementByCss(locator);
            input.clear();
            input.sendKeys(content); 
    

    5. 单选框

            WebElement radio = this.locateElementByXpath(locator);
            radio.click();
            radio.isSelected();
    

    6. 复选框

            WebElement checkbox = this.locateElementByXpath(locator);
            checkbox.click();
            checkbox.isSelected();
    

    2. 超链接

            WebElement link = this.locateElementByXpath(locator);
            link.click();
    

    按值选

     WebElement element = this.locateElementByXpath(locator);
            Select select = new Select(element);
            select.selectByValue(value);
            //select.selectByVisibleText(text);
    

    6. 按钮

            WebElement submit = this.locateElementByXpath(locator);
            submit.click();
            submit.isEnabled();
    

    8. 关闭和退出

        public void closeBrowser()
        {
            driver.close();
            driver.quit();
        }
    

    四、窗口操作

    3. 切换到alert框

    Alert alert = driver.switchTo().alert();
    

    4. 切换到窗口

    driver.switchTo().window( "windowName" ); 
    或者
    for (String handle : driver.getWindowHandles()) {
    driver.switchTo().window(handle);
    }
    

    5. 切换到iframe

    driver.switchTo().frame( "frameName" );
    通过索引访问subframe:
    driver.switchTo().frame( "frameName.0.child" );(frameName的第一个subframe的明价child的frame)
    
    

    五、鼠标键盘操作

    1. 拖拽

    2. 键盘打字

    3. 鼠标移动

    相关文章

      网友评论

        本文标题:HTML前端:webdriver总结

        本文链接:https://www.haomeiwen.com/subject/gtqsbxtx.html