使用selenium监听每一步操作
1.创建类LogEventListener.java, 如下:
package com.demo; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.WebDriverEventListener; /**
* 用一个类扩展web driver自带的事件监听器,可以实现许多有趣的功能。
* 比如自动log
* a customer event listener
*/
public class LogEventListener implements WebDriverEventListener { public void beforeNavigateTo(String url, WebDriver driver) {
System.out.println("转向前URL: '" + url + "'");
} public void afterNavigateTo(String url, WebDriver driver) {
System.out.println("转向后URL:'" + url + "'");
} public void beforeChangeValueOf(WebElement element, WebDriver driver) {
System.out.println("Value of the:" + element.toString()
+ " before any changes made");
} public void afterChangeValueOf(WebElement element, WebDriver driver) {
System.out.println("Element value changed to: " + element.toString());
} public void beforeClickOn(WebElement element, WebDriver driver) {
System.out.println("试图单击对象: " + element.toString());
} public void afterClickOn(WebElement element, WebDriver driver) {
System.out.println("单击对象: " + element.toString());
} public void beforeNavigateBack(WebDriver driver) {
System.out.println("Navigating back to previous page");
} public void afterNavigateBack(WebDriver driver) {
System.out.println("Navigated back to previous page");
} public void beforeNavigateForward(WebDriver driver) {
System.out.println("Navigating forward to next page");
} public void afterNavigateForward(WebDriver driver) {
System.out.println("Navigated forward to next page");
} public void onException(Throwable error, WebDriver driver) {
System.out.println("Exception occured: " + error);
} public void beforeFindBy(By by, WebElement element, WebDriver driver) {
System.out.println("试图寻找对象 : " + by.toString());
} public void afterFindBy(By by, WebElement element, WebDriver driver) {
System.out.println("找到对象 : " + by.toString());
} /*
* non overridden methods of WebListener class
*/
public void beforeScript(String script, WebDriver driver) {
} public void afterScript(String script, WebDriver driver) {
} @Override
public void afterChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) {
// TODO Auto-generated method stub } @Override
public void afterNavigateRefresh(WebDriver arg0) {
// TODO Auto-generated method stub } @Override
public void beforeChangeValueOf(WebElement arg0, WebDriver arg1, CharSequence[] arg2) {
// TODO Auto-generated method stub } @Override
public void beforeNavigateRefresh(WebDriver arg0) {
// TODO Auto-generated method stub } }
2.在创建WebEventListener监听类,如下:
package com.demo; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.AbstractWebDriverEventListener; public class WebEventListener extends AbstractWebDriverEventListener { public void beforeNavigateTo(String url, WebDriver driver) {
System.out.println("打开前url: '" + url + "'");
} public void afterNavigateTo(String url, WebDriver driver) {
System.out.println("打开url:'" + url + "'");
} public void beforeClickOn(WebElement element, WebDriver driver) {
System.out.println("试图单击对象: " + element.toString());
} public void afterClickOn(WebElement element, WebDriver driver) {
System.out.println("单击对象: " + element.toString());
} public void onException(Throwable error, WebDriver driver) {
System.out.println("Error occurred: " + error);
}
}
3.使用监听,如下:
package com.demo; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; public class ListenerTest { private WebDriver driver;
private EventFiringWebDriver e_driver;
private WebEventListener eventListener;
private WebDriverWait wait;
private String appURL = "http://www.google.com";
public int waitTime = 10;
private String headerText = "One account. All of Google.";
private String errMessage = "The email and password you entered don't match."; @BeforeClass()
public void setUp() { driver = new FirefoxDriver();
wait = new WebDriverWait(driver, waitTime); e_driver = new EventFiringWebDriver(driver); eventListener = new WebEventListener();
e_driver.register(eventListener); e_driver.manage().window().maximize();
e_driver.get(appURL);
} @Test
public void testEventsONE() {
System.out.println("***** Executing Test ONE ***** ");
e_driver.findElement(By.linkText("Gmail")).click();
String pageHeaderText = e_driver.findElement(By.tagName("h1")).getText();
Assert.assertTrue(pageHeaderText.equalsIgnoreCase(headerText));
} @Test
public void testEventsTWO() {
System.out.println("***** Executing Test Two ***** ");
e_driver.findElement(By.id("Email")).sendKeys("username");
e_driver.findElement(By.id("next")).click(); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Passwd")));
e_driver.findElement(By.id("Passwd")).sendKeys("password");
e_driver.findElement(By.id("signIn")).click(); String pageHeaderText = e_driver.findElement(By.id("errormsg_0_Passwd")).getText();
Assert.assertTrue(pageHeaderText.equalsIgnoreCase(errMessage));
} @AfterClass()
public void tearDown() {
if (e_driver != null) {
e_driver.quit();
}
} }
运行查看控制台打印的信息
使用selenium监听每一步操作的更多相关文章
- Android View转为图片保存为本地文件,异步监听回调操作结果;
把手机上的一个View或ViewGroup转为Bitmap,再把Bitmap保存为.png格式的图片: 由于View转Bitmap.和Bitmap转图片都是耗时操作,(生成一个1M的图片大约500ms ...
- 实时监听 mysql 操作,Linux 版
效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...
- Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作
<div id="divId" class="divTable"> <div class="tableBody"> ...
- C#WinForm窗体监听/拦截操作动作
C#中的事件也是通过封装系统消息来实现的,如果你在WndProc函数中不处理该消息 那么,它会被交给系统来处理该消息,系统便会通过代理来实现鼠标单击的处理函数,因此你可以通过 WndProc函数来拦截 ...
- NSOperation操作依赖和监听
1.操作依赖 NSOperation之间可以设置依赖来保证执行顺序 比如一定要让操作A执行完后,才能执行操作B,可以这么写 [operationB addDependency:operationA]; ...
- Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
- SD卡的监听
摘要:在一般应用中,如果需要对占用空间比较大的文件操作,需要监听SD卡的状态,Android中对SD卡的监听状态操作步骤如下: 一.创建一个类继承于BroadcastReceiver public c ...
- Android的事件处理机制详解(二)-----基于监听的事件处理机制
基于监听的事件处理机制 前言: 我们开发的app更多的时候是需要与用户的交互----即对用户的操作进行响应 这就涉及到了android的事件处理机制; android给我们提供了两套功能强大的处理机制 ...
- Servlet的监听
Servlet监听 在<Servlet和Jsp>中我们使用了ServletConfig获取Servlet的初始配置,用ServletContext来获取整个Web应用的初始配置,但如果需要 ...
随机推荐
- 基数排序C#界面版
第一步:生成数据 第二步:读取数据 第三步:创建队列 第四步:入队分配 第五步:出队收集重复第四步与第五步,直到出队入队各四次,完成基数排序:如下:4次入队结束后如下:最后一次出队:基数排序完成.. ...
- IOS transform的使用(移动,放大,旋转)
@interface ViewController () - (IBAction)up; - (IBAction)big ; - (IBAction)leftRotate ; @property (n ...
- win10自带应用图标显示感叹号无法打开如何解决(详细版)
现象 今天打开电脑图片时发现系统自带的大多应用都无法运行,这些应用图标上都显示着一个感叹号, 应用图标上的颜色被覆上了一层黑色点击后无法运行,自带的应用商店也无法打开,想重装软件都不行这是怎么回事呢? ...
- CoreData的学习
第一步:创建项目是勾选coredata,当然创建的时候没有勾选,之后还可以手动生产, 然后:创建数据库模型,及为其添加模型的属性. 然后生成模型文件: 注意⚠️:首先设置为Manual/None 不 ...
- SQL Server 2008 R2 附加数据库 “尝试打开或创建物理文件 拒绝访问”的解决办法
其实是来自一篇SQL Server 2005同样错误的帖子,不过试了在SQL Server 2008 R2下面也有效,记录一下. 解决方法: 在所有程序—Microsoft SQL Server 20 ...
- Maven项目导出可执行jar
配置文件中添加插件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>m ...
- 第10章 新建工程-库函数版—零死角玩转STM32-F429系列
第10章 新建工程—库函数版 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- 推荐优秀的开源GIS软件
推荐优秀的开源GIS软件(以后会补充) 从GIS入门到现在,我已经接触不少优秀的GIS软件,这里列出我使用过优秀的开源GIS软件. 桌面GIS软件: Qgis(基于Qt使用C++开发的跨平台桌面软件, ...
- java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
根据xml文件设计Student对象 <?xml version="1.0" encoding="UTF-8"?> <students> ...
- CRC32为例详细解析(菜鸟至老鸟进阶)
CRC-知识解析 cyclic redundancy check 写在前面的话: 之前在做学校项目的时候用到了CRC 原理,但在网上查找的过程中,发现讲解CRC知识的资源很多,但是对新手比较友好的.讲 ...