1.  
  1. /**
    * JScript实现鼠标悬停
    */
    public void mouseHoverJScript(By by,WebElement HoverElement) {
    // TODO Auto-generated method stub
    try {
    if (isElementPresent(by)) { //isElementPresent() :自己封装的判断元素是否存在的方法
    String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}";
    ((JavascriptExecutor) driver).executeScript(mouseOverScript, HoverElement);
    } else {
    System.out.println("Element was not visible to hover " + "\n");
    }
    } catch (StaleElementReferenceException e) {
    // TODO: handle exception
    System.out.println("Element with " + HoverElement + "元素未附加到页面文档" + Arrays.toString(e.getStackTrace()));
    } catch (NoSuchElementException e) {
    // TODO: handle exception
    System.out.println("Element " + HoverElement + " 元素未在DOM中没有找到" + Arrays.toString(e.getStackTrace()));
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    System.out.println("悬停时发生错误" + Arrays.toString(e.getStackTrace()));
    }
    }
  2.  
  3. /**
    * 等待弹窗出现并点掉
    */
    public void waitAlertClick(){
    WebDriverWait wait = new WebDriverWait(driver, 15);
    try {
    Alert alert = wait.until(new ExpectedCondition<Alert>() {
    @Override
    public Alert apply(WebDriver driver1) {
    try {
    return driver.switchTo().alert();
    } catch (NoAlertPresentException | UnhandledAlertException ignored) {
    return null;
    }
    }
    });
    alert.accept();
    } catch (NullPointerException e) {
    System.out.println("-----------------------No Alert-----------------------");
    }
    }
  4.  
  5. /**
    *
    *获取弹窗,便于进行对其进行操作
    * @return
    */
    public Alert getAlert(){
    WebDriverWait wait = new WebDriverWait(driver, 15);
    Alert alert;
    try{
    alert= wait.until(new ExpectedCondition<Alert>() {
    @Override
    public Alert apply(WebDriver driver1) {
    try {
    return driver.switchTo().alert();
    } catch (NoAlertPresentException | UnhandledAlertException ignored) {
    return null;
    }
    }
    });
    }catch (TimeoutException ignored){
    System.out.println("-----------------------Time Out:No Alert-----------------------");
    return null;
    }
    return alert;
    }
  6.  
  7. /**
    * 等待元素存在并可见
    * @param by
    * isEnable用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
    */
    public void waitEleIsDisplay(By by){
    WebDriverWait wait = new WebDriverWait(driver, 20);
    try {
    wait.until(new ExpectedCondition<Boolean>() {
    @Override
    public Boolean apply(WebDriver driver1) {
    try {
    WebElement ele=driver.findElement(by);
    return ele.isDisplayed()&&ele.isEnabled();
    }catch (NoSuchElementException e){
    return null;
    }
    }
    });
    }catch (TimeoutException e ){
    System.out.println("------------Timed out after 20 seconds waiting for:"+by+"------------");
    }
  8.  
  9. }
  10.  
  1. /**
    * 发送字符串到文本框或者其他<br>
    * 如果普通的element.sendKeys无法使用,请尝试使用此方法
    * @param element
    * @param keys
    */
    public void mouseSendKeys(WebElement element, String keys) {
    Actions action = new Actions(driver);
    action.moveToElement(element);
    action.click();
    action.sendKeys(keys);
    action.perform();
    }
  1.  
  1. /**
    * 截图-当前页面
    * @param driver
    * @return booelan 截图是否成功
    */
    public boolean screenshot() {
    String pngName = String.valueOf(System.currentTimeMillis())+".png";
    String capturePath = DcitsUtil.SCREENSHOT_PATH + "/" + pngName; //DcitsUtil.SCREENSHOT_PATH 为封装的路径
    File screenShotFile = ((TakesScreenshot)this.driver).getScreenshotAs(OutputType.FILE);
    try {
    FileUtils.copyFile(screenShotFile, new File(capturePath));
    } catch (Exception e) {
    // TODO: handle exception
    System.out.println(""截图出错+e.getMessage())
    return false;
    }
    return true;
    }
  1.  

Web自动化常用方法封装(不定时更新)的更多相关文章

  1. C# + ArcEngine 常用方法(不定时更新)

    1.Arcengine调用GP服务,抛出异常方法 object sev = null; try { Application.DoEvents(); gp.Execute(gpBuildPyramids ...

  2. vue项目常用方法封装,持续更新中。。。

    vue项目中可以直接使用 1.常用工具类untils.js中 /* * 验证手机号是否合格 * true--说明合格 */ export function isPhone(phoneStr){ let ...

  3. Python 接口自动化常用方法封装

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ************************************* # @Time : 2019/ ...

  4. 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...

  5. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  6. web自动化针对PO模式进行二次封装之basepage

    在PO模式当中,我们做到了页面对象与测试用例的分离,但在页面对象编写时,我们仍然还有优化的空间.页面对象有一些共同的基本操作,可以封装起来,并可以在基本操作当中加上日志和异常截图的处理.比如说我们在查 ...

  7. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

  8. 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  9. POPTEST培训:web自动化测试之DOM

    POPTEST培训:web自动化测试之DOM   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq ...

随机推荐

  1. URL列表

    MySql函数大全:http://www.cnblogs.com/xuyulin/p/5468102.html

  2. 【转】上传jar包到nexus私服

    原文:https://my.oschina.net/lujianing/blog/297128 1通过网页上传 这种方法只是上传了jar包.通过maven引用当前jar,不能取得jar的依赖 from ...

  3. Kmalloc和Vmalloc的区别

    kmalloc()和vmalloc()介绍kmalloc()用于申请较小的.连续的物理内存1. 以字节为单位进行分配,在<linux/slab.h>中2. void *kmalloc(si ...

  4. C# lambda 和 Linq

    本章节给大家带来的是Lambda 和 Linq 的关系 Lambda : 是实例化委托的一个参数,也就是一个方法 Linq:是基于委托(lambda)的封装,代码重用,逻辑解耦,是一个帮助类库,lin ...

  5. Java并发编程(七)终结线程

    线程的状态 一个线程会有如下五个状态 1.新建:线程在被创建时会暂时处于这种状态,此时系统为线程分配资源并对其进行初始化 2.就绪:此时线程已经可以运行,只是系统没有为其分配CPU时间. 3.运行:系 ...

  6. Python 基础 类的继承

    如果寂静定义了Person类,需要定义新的Student 和Teacher 类时 可以直接从Person 中继承 class Person(Object): def __init__(self,nam ...

  7. ZJOI2008]树的统计(树链剖分,线段树)

    题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u ...

  8. MySQL->复制表[20180509]

    MySQL复制表     通常复制表所采用CREATE TABLE .... SELECT 方式将资料复制,但无法将旧表中的索引,约束(除非空以外的)也复制.   完整复制MySQL数据表所需步骤: ...

  9. 怎样在Win7系统中搭建Web服务器

    一.搭建web服务 1.打开控制面板,选择并进入“程序”,双击“打开或关闭Windows服务”,在弹出的窗口中选择“Internet信息服务”下面所有的选项,点击确定后,开始更新服务. 2.更新完成后 ...

  10. js清除浏览器缓存

    浏览器缓存 所有的数据都可以存到服务器中,但这样并不高效,当我们访问网页的时候,一会卡顿,二会浪费服务器的存储空间,三会给服务器造成压力 浏览器缓存,可以提高网站性能和浏览器的速度,但对于需要经常更新 ...