美文网首页我爱编程
selenium 笔记 --- 常用操作【java】

selenium 笔记 --- 常用操作【java】

作者: 这不挺好 | 来源:发表于2017-11-08 16:28 被阅读0次

    一、selenium 动作

    1、浏览器窗口控制:
    // 前置 
    WebDriver driver = new ChromeDriver();
    driver.get("http://www.baidu.com");       //  打开指定页面地址
    
    // 窗口最大化  
    driver.manage().window().maximize()   
    
    // 指定窗口大小
    Dimension arg0 = new Dimension(800, 480);
    driver.manage().window().setSize(arg0);
    
    // 模拟浏览器返回
    driver.navigate().back();
    
    // 同上一步意思相反
    driver.navigate().forward();
    
    // 模拟浏览器刷新
    driver.navigate().refresh();
    
    // 关闭浏览器
    driver.quit();
    
    2、常用元素操作:
    方法 介绍
    getText() 获取元素文本信息
    sendKeys() 输入框 or 文本框内容输入
    # sendKeys 示例:
    driver.findElement(By.className("username")).sendKeys("helloword");
    
    clear() 清除输入框 or 文本框内容
    click() 点击
    submit() 提交,跟click类似
    getAttribute() 获取某个属性的值
    # getAttribute()  
    # 源码:
    <html>
        <body>
            <input class="hello" type="text" placeholder="hello world !!!!"/>
        </body>
    </html>
    
    # 示例:
    String a = driver.findElement(By.className("hello")).getAttribute("placeholder");
    System.out.println(a);
    
    # 输出:
    hello world !!!!
    
    getSize() 获取元素的 宽 高
    getTagName() 获取属性的标签名称
    driver.getTitle() 获取网页title
    isDisplayed() 判断页面元素是否存在 【 注:若元素存在返回 true , 不存在会抛 NoSuchElementException 异常,表示找不到元素】
    #还有一种判断元素是否存在
    WebElement element = driver.findElement(By.className("movable"));
    // 判断 element 不为 null
    if (!ObjectUtils.isEmpty(element)){
        System.out.println(element.getText());
    }else {
        System.out.println("元素不存在");
    }
    
    isEnabled() 判断元素是否可用 , 返回 true 和 false
    isSelected() 判断元素是否为选中状态 ,使用场景:单选框,下拉列表,复选框等
    3、Actions 操作:
    3.1、创建 Actions 对象:

    Actions actions = new Actions(driver);

    3.2、Actions 模拟鼠标操作:
    # 注意这里列出比较常用的action鼠标操作
    方法 介绍
    actions.perform() 所有动作执行操作,这个必须加,不然actions不会执行任何操作
    actions.build() 编译构建动作,建议附带
    actions.click(WebElement target) 鼠标左键点击指定元素
    actions.contextClick(WebElement target) 鼠标右键点击指定元素
    actions.doubleClick(WebElement target) 鼠标双击指定的元素
    actions.clickAndHold(WebElement element) 鼠标左键点击不释放,此动作可以当做鼠标悬停使用
    actions.dragAndDrop(source,target) 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置。
    actions.dragAndDrop(source,xOffset,yOffset) 鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标 【注意:拖动事件chrome好像不怎么支持】
    actions.moveToElement(toElement) 将鼠标移到 toElement 元素中点
    actions.moveToElement(toElement,xOffset,yOffset) 这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。
    actions.moveByOffset(xOffset,yOffset) 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴

    【注意: 这里需要注意,如果 xOffset 为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。而且如果这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出 MoveTargetOutOfBoundsExecption 的异常。】

    actions.release() 释放鼠标
    3.2、Actions 模拟键盘操作:
    方法 介绍
    action.keyDown(Keys.CONTROL) 按下 Ctrl 键
    action.keyDown(Keys.SHIFT) 按下 Shift 键
    action.keyDown(Key.ALT) 按下 Alt 键
    action.keyUp(Keys.CONTROL) 释放 Ctrl 键
    action.keyUp(Keys.SHIFT) 释放 Shift 键
    action.keyUp(Keys.ALT) 释放 Alt 键

    说明:个人感觉键盘模拟操作用的不多,所以不多做介绍,需要可 www.google.comwww.baidu.com查询

    4、selenium 界面截图
    # 主体:
      ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    
    # 示例:
       try {
                //返回一个文件,需要File接收
                File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
                //时间格式化
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                //将突破copy到指定路径下
                FileUtils.copyFile(file, new File("D:\\IEDAProject\\img\\" + sdf.format(new Date()) + imgName + ".png"));
            }catch (IOException io){
                io.printStackTrace();
            }
    
    4、selenium操作vedio/audio元素
    方法 介绍
    addTextTrack() 向音频 or 视频添加新的文本轨道
    canPlayType() 检测浏览器是否能播放指定的音频 or 视频类型
    load() 重新加载音频 or 视频元素
    play() 开始播放音频 or 视频
    pause() 暂停当前播放的音频 or 视频
    #  示例
    WebDriver driver = new ChromeDriver();
    //  获取视频元素
    WebElement element = driver.findElement(By.tagName("video"));
    //  将driver 转换为  javascript 类型
    JavascriptExecutor jse = (JavascriptExecutor) driver;
    //  play() 开始播放
    jse.executeScript("return arguments[0].play()" , element);
    
    5、 selenium 操作滚动条
    - 5.1 、div内的滚动条操作
    方法 描述
    scrollHeight 获取滚动条高度
    scrollWidth 获取横向滚动条宽度
    scrollLeft=1000 控制横向滚动条位置【1000是指位置的值,根据自己需求修改】
    scrollTop=10000 控制纵向滚动条位置【1000是指位置的值,根据自己需求修改】
    //注意 scroll 是指所定位元素的名称,ByClassName 代表的是定位元素的类型
    String js = "document.getElementsByClassName(\"scroll\")[0].scrollTop=10000"; 
    
    // 下面的代码有两种写法:
    
    ((JavascriptExecutor) driver).executeScript(js);
    
    // or  根据自己习惯写就好了
    
    JavascriptExecutor jse = (JavascriptExecutor) driver;
    jse.executeScript(js);
    
    - 5.1 、 Actions 的 sendKeys() 来操作滚动条
    # 前置
    Actions action = new Actions(driver);
    
    //  向下滚动致最底部
    action.sendKeys(Keys.ARROW_DOWN)
          .sendKeys(Keys.END)
          .perform();
    
    //  向上滚动致最顶部
    action.sendKeys(Keys.PAGE_UP)
          .sendKeys(Keys.HOME)
          .perform();
    

    http://www.cnblogs.com/xinxin1994/category/1049549.html

    相关文章

      网友评论

        本文标题:selenium 笔记 --- 常用操作【java】

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