美文网首页selenium我爱编程
Selenium框架知识点整理

Selenium框架知识点整理

作者: 测试老杨 | 来源:发表于2018-01-27 00:37 被阅读48次

    1 元素定位

    1.1 通过id查找---driver.findElement(By.id(String str))

    假设页面写成这样:

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

    那么可以这样找到页面的元素:
    通过id查找:

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

    1.2 通过name查找----driver.findElement(By.name(String str))

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

    1.3 通过className查找---driver.findElement(By.className(String str))

    假设页面写成这样:

    <div class="cheese"><span>Cheddar</span></div><div class="cheese"><span>Gouda</span></div>
    

    可以通过这样查找页面元素:

    List<WebElement>cheeses = driver.findElements(By.className("cheese"));
    

    1.4 driver.findElement(By.linkText(String str))

    假设页面元素写成这样:

    <a href="http://www.google.com/search?q=cheese">cheese</a>
    

    那么可以通过这样查找:

    WebElement cheese =driver.findElement(By.linkText("cheese"));
    

    1.5 driver.findElement(By.partialLinkText(String str))

    假设页面元素写成这样:

    <a href="http://www.google.com/search?q=cheese">cheese</a>
    

    那么可以通过这样查找:

    WebElement cheese =driver.findElement(By.partialLinkText("ese"));
    

    1.6 通过xpath查找----driver.findElement(By.xpath(String str))

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

    2 API

    2.1 打开网页

    driver.get(String url)
    例如:

        driver.get("http://www.w3school.com.cn/") 
    

    2.2 输入框

    例如:

        //找到输入框元素
        WebElement element = driver.findElement(By.id("password"));
        //在输入框中输入内容:
        element.sendKeys("123456");
        //将输入框清空:
        element.clear();
        //获取输入框的文本内容:
        element.getText();
    

    2.3 下拉框

    select.selectByIndex(int num)
    num---选项对应的索引值
    select.selectByValue(String str)
    str---选项对应的value属性值
    select.selectByVisibleText(String str)
    str---选项值
    例如:

    //找到下拉选择框的元素:
    Select select = new Select(driver.findElement(By.id("select")));
    //选择对应的选择项:
    select.selectByVisibleText("mediaAgencyA");
    //或
    select.selectByValue("MA_ID_001");
    //不选择对应的选择项:
    select.deselectAll();
    select.deselectByValue("MA_ID_001");
    select.deselectByVisibleText("mediaAgencyA");
    //或者获取选择项的值:
    select.getAllSelectedOptions();
    select.getFirstSelectedOption();
    

    2.4 单选按钮(Radio Button)

    例如:

    //找到单选框元素:
    WebElement bookMode =driver.findElement(By.id("BookMode"));
    //选择某个单选项:
    bookMode.click();
    //清空某个单选项:
    bookMode.clear();
    //判断某个单选项是否已经被选择:
    bookMode.isSelected();
    

    2.5 多选项(checkbox)

    多选项的操作和单选的差不多,例如:

    WebElement checkbox =driver.findElement(By.id("myCheckbox"));
    checkbox.click();
    checkbox.clear();
    checkbox.isSelected();
    checkbox.isEnabled();
    

    2.6 按钮(button)

    例如:

    //找到按钮元素
    WebElement saveButton = driver.findElement(By.id("save"));
    //点击按钮
    saveButton.click();
    //判断按钮是否enable
    saveButton.isEnabled ();
    

    2.7 driver.navigate().back()

    作用是模拟单击浏览器的后退按钮。

    driver.navigate().forword()
    

    2.8 driver.navigate(). refresh()

    作用是刷新当前页面。

    2.9 driver.close()

    该方法的作用是模拟用户单击浏览器窗口上或者标签的关闭按钮。

    driver.quit()---退出driver,并关闭所有相关的窗口

    2.10 driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit);

    作用:因为Load页面需要一段时间,如果页面还没加载完就查找元素,必然是查找不到的。最好的方式,就是设置一个默认等待时间,在查找页面元素的时候如果找不到就等待一段时间再找,直到超时。
    参数:
    time---等待时间
    unit ---时间单位

    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    

    2.11 element.submit()

    方法作用:提交一个指定的表单,适用于没有提交按钮的表单。
    参数:

    2.12浏览器多窗口处理

    在进行Web测试时,还会弹出一些子窗口,并且在多个窗口之间进行切换操作。
    当进行了某个操作,将会有新窗口弹出时,如果要到新开的页面上进行操作,需要切换到新窗口。

     //Switch to new window opened 
    for(String winHandle : driver.getWindowHandles()){ 
    System. out.println( "+++" + winHandle); 
    driver.switchTo().window(winHandle); 
    }  
    

    2.13 Frames之间的切换

    有时候,切换前最好先执行:

    driver.switchTo().defaultContent();
    

    切换(第一次)到某个frame:

    driver.switchTo().frame(leftFrame);
    

    从一个frame切换(第二次)到另一个frame:

    driver.switchTo().defaultContent();
    driver.switchTo().frame(mainFrame);
    

    比如,在富文本框里输入文本,然后提交

    //根据iframe id
    driver.switchTo().frame( "ueditor_0");
    //抓取元素类
    driver.findElement(By. xpath("//body[@class='view']")).sendKeys( "测试前台反馈输入 test input" );
    //切换到默认的frame
    driver.switchTo().defaultContent();
    driver.findElement(By. xpath("//input[@value='提交']")).click();
    

    2.14 操作对话框

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

    alert.accept() --- 确定
    alert.dismiss() --- 取消
    alert.getText() --- 提示信息

    2.15 上传文件

    WebElement adFileUpload = driver.findElement(By.id("WAP-upload"));
    String filePath = "C:\\test\\uploadfile\\media_ads\\test.jpg";
    adFileUpload.sendKeys(filePath);
    

    或者

    setClipboardData("E:\\autotest\\huawei.jpg");           
    driver.findElement(By.name("goods_img")).click();
    try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            //
            uploadFile(robot);
    
    //该方法用来设置剪贴板上的数据
    public void setClipboardData(String string) {
            StringSelection stringSelection = new StringSelection(string);
            Toolkit.getDefaultToolkit().getSystemClipboard()
                    .setContents(stringSelection, null);
      }
    
    //该方法用来上传附件
     public void uploadFile(Robot robot) {
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
      } 
    

    2.16 结果验证

    例如:

    assertEquals(driver.getCurrentUrl(),"http://localhost:90/upload/flow.php?step=cart");
    assertEquals(driver.getTitle(),"报销单详情 - 费用管理 ");
    assertEquals(driver.findElement(By.xpath("//*[@id='ECS_MEMBERZONE']/font/font")).getText(),"admin");
    

    相关文章

      网友评论

        本文标题:Selenium框架知识点整理

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