/**
* 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()));
}
} /**
* 等待弹窗出现并点掉
*/
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-----------------------");
}
} /**
*
*获取弹窗,便于进行对其进行操作
* @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;
} /**
* 等待元素存在并可见
* @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+"------------");
} }
/**
* 发送字符串到文本框或者其他<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();
}
 
/**
* 截图-当前页面
* @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;
}
 

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. sqoop mysql--->hive 报错 (ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf)

    ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apa ...

  2. sql语句查询知识点

    LEFT JOIN    关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行 INNER JOIN   INNER JOIN 关键字在表中存在至少一个匹 ...

  3. 在hyper-v中安装centos后配置网络

    /etc/sysconfig/network-scripts vi ifcfg-eth0 改为以下配置 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no ...

  4. Android 把url生成二维码并贴到给定的底图上

    主要是用到了com.google.zxing jar包生成二维码的功能,这个jar包需要自己接下载 直接上代码 public static Bitmap CreateBinaryCodeImageBy ...

  5. 关于keil不同容量和不同引脚大小的编译以及下载出错问题

    如果遇到这个问题一般可能有四个原因(以STM32F103C8T6为例) 1.芯片型号没有选对 2.startup文件可能没有选对,startup文件常用的分为3种,startup_stm32f10x_ ...

  6. Oracle 11G 隐含参数“_controlfile_autobackup_delay”

    RMAN设置控制文件自动备份,当发生数据库备份时,或建表空间,删除log文件等物理结构发生改变时,oracle会自动备份控制文件. Oracle 10g会立刻备份,Oracle 11g会有几分钟的延迟 ...

  7. Vue如何循环渲染图片

    Vue如何把服务器返回的图片数据渲染出来 首先,一般来说,当请求图片的接口时,会返回一个数组,这个数组里会是一些图片的名字,比如1.jpg,2.jpg. 我的做法是先在data里定义一个数组,来存储服 ...

  8. POJ3074 Sudoku(lowbit优化搜索)

    In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...

  9. MySQL->索引的维护[20180504]

    学习MySQL数据库中表的索引维护(新增和删除)       索引的好处:             提高查询的效率             可限定特定的资料(如唯一)     索引的不足:       ...

  10. shell习题第8题:监控nginx的502状态

    [题目要求] 服务器上跑的是LNMP环境,近期总是有502现象.502为网站访问的状态码,200正常,502错误是nginx最为普遍的错误状态码. 由于502只是暂时的,并且只要一重启php-fpm服 ...