使用Selenium和HTML中的动态ID进行Java测试

Selenium最酷的方面之一是,您不仅可以使用网站进行录制,还可以将其实际用作junit测试。

首先,我将在Firefox中安装Selenium(因为这是正式版本)并进行快速测试。 重要的是要注意,Selenium将为您提供多种不同的方式来记住您调用了哪个html标记。 例如,它可以仅调用页面上的特定ID。

但是,当使用Liferay下的诸如JSF之类的门户系统时,id值是即时生成的,因此您需要记录一次测试,然后再也无法成功运行它。

Selenium的一个非常不错的功能是您可以调用HTML xpath,因此在Liferay示例中,您的代码仍会找到需要单击的标记。 可以说我记录自己登录下面的页面…

现在,由于此页面是使用liferay生成的,因此我可以看到表单的输入文本ID为…

<input aria-required="true" class="aui-field-input
aui-field-input-text aui-form-validator-error" id="_58_login" 
name="_58_login" type="text" value="" />

由于Liferay下的JSF会非常定期地为此文本框创建一个新的ID(我相信每次重启服务器,尽管它可能会更频繁,但我相信每次重启),这意味着我们不能仅仅获取ID并挂接到它,因为测试将只运行一次。

但是,我们可以做的是通过直接使用html标签直接连接到liferay中,因为每次Liferay加载JSF时它都不会不同。 我注意到我必须对Liferay中的每个页面使用相同的技术,因为每次访问该页面时,几乎所有通过JSF呈现的html的id都有一个不同的id。

然后我们可以从文件菜单File | File中将其导出到junit类。 将测试用例导出为…| Java / JUnit 4 / Web驱动程序,它将为我们提供以下用于运行和测试的类。

import static org.junit.Assert.fail;import java.util.concurrent.TimeUnit;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class TestExample {private WebDriver driver;private String baseUrl;private StringBuffer verificationErrors = new StringBuffer();@Beforepublic void setUp() throws Exception {driver = new FirefoxDriver();baseUrl = "http://localhost:8080";driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);}@Testpublic void testExample() throws Exception {driver.get(baseUrl + "/en_GB/web/myapp/home?p_p_id=58&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&saveLastPath=0&_58_struts_action=%2Flogin%2Flogin");driver.findElement(By.xpath("//span/input")).clear();driver.findElement(By.xpath("//span/input")).sendKeys("user");driver.findElement(By.xpath("//span[2]/span/span/input")).clear();driver.findElement(By.xpath("//span[2]/span/span/input")).sendKeys("pass");driver.findElement(By.xpath("//div/span/span/input")).click();}@Afterpublic void tearDown() throws Exception {driver.quit();String verificationErrorString = verificationErrors.toString();if (!"".equals(verificationErrorString)) {fail(verificationErrorString);}}
}

参考:我们的JCG合作伙伴 David Gray在Code Mumble博客上对Java中的Selenium和动态ID进行Java测试 。

翻译自: https://www.javacodegeeks.com/2013/06/java-testing-with-selenium-and-dynamic-ids-in-html.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看表空间名称、大小、使用大小、剩余大小和使用率

查看表空间名称、大小、使用大小、剩余大小和使用率&#xff1a; SELECT a.tablespace_name "表空间名称", total / (1024 * 1024) "表空间大小(M)", free / (1024 * 1024) "表空间剩余大小(M)", (total - free) / (1024 * 1024 ) "表空…

编译安装PHP-7.2.8

一 下载并软件包 wget http://124.205.69.169/files/A218000006E9730A/cn2.php.net/distributions/php-7.2.8.tar.gz tar xf php-7.2.8.tar.gz cd php-7.2.8 二 安装依赖程序 yum -y install pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c autoconf libjpeg l…

常用操作符

2 1. 转换类型数据&#xff0c;可以先定义一个数据&#xff0c;然后在采用调用的方法进行转换。 2. 进行查看相关数据&#xff0c;使用type类型数据进行查看&#xff0c;例如&#xff1a;type(**),然后就可以查到所属的类型了。但是对于单个字符来说&#xff0c;例如红线方…

重要通知,事关校营宝新老用户,敬请知悉!

尊敬的校营宝用户&#xff0c;感谢您选择校营宝培训学校管理系统&#xff0c;我们的发展离不开您的支持鼓励&#xff0c;只要您选择校营宝&#xff0c;就是我们的终身客户&#xff0c;我们承诺给您终身的售后咨询服务&#xff01; 校营宝培训学校管理系统是面向校外艺术类培训…

从条纹边框的实现谈盒子模型

类似下面这个图形&#xff0c;只使用一个标签&#xff0c;可以有多少种实现方式&#xff1a;(不考虑兼容性的情况下) 假设我们的单标签为 div : 定义如下通用 CSS: div{ position:relative; width: 180px; height: 180px; } NO.1 方案一&#xff1a;div上是棕色背景&#xf…

Android_(游戏)打飞机04:绘画敌机、添加子弹

(游戏)打飞机01&#xff1a;前言  传送门 (游戏)打飞机02&#xff1a;游戏背景滚动  传送门 (游戏)打飞机03&#xff1a;控制玩家飞机   传送门 (游戏)打飞机04&#xff1a;绘画敌机、添加子弹   传送门 (游戏)打飞机05&#xff1a;处理子弹&#xff0c;击中敌机&am…

关于HTML5本地持久化存储的Web SQL、Local Storage、Cookies技术

在浏览器客户端记录一些信息&#xff0c;有三种常用的Web数据持久化存储的方式&#xff0c;分别是Web SQL、Local Storage、Cookies。Web SQL作为html5本地数据库&#xff0c;可通过一套API来操纵客户端的数据库&#xff08;关系数据库&#xff09;&#xff0c;下面是支持浏览器…

死锁

7.1 系统模型 定义&#xff1a;多个进程竞争一定数量的资源&#xff0c;某个进程申请资源&#xff0c;若此时该资源不可用&#xff0c;则进程进入等待状态。若所申请的资源被其他等待进程占用&#xff0c;则该等待进程可能再也不法改变其状态。 进程使用资源的顺序&#xff1a;…

mysql lepus_MySQL 监控软件lepus天兔

概述类别版本操作系统Centos 7.4数据库版本MySQL 5.6.49天兔版本lepus 3.7依赖软件1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据)2.Apache 2.2及以上 (必须,WEB服务器运行服务器)3.PHP 5.3以上 (必须,提供WEB界面支持)4.Python2 (必须,推荐2.6及以上版本,执行数据采集和…

模式的秘密--工厂模式

工厂模式概念&#xff1a; 实例化对象&#xff0c;用工厂方法代替new操作工厂模式包括工厂方法模式和抽象工厂模式抽象工厂模式是工厂方法模式的扩展工厂模式的意图&#xff1a; 定义一个接口创建对象&#xff0c;但是让子类决定哪些类需要被实例化。工厂方法把实例化的工作推迟…

Html5移动开发之Localstorage(本地存储)

HTML5本地存储Localstorage自从Html5中出现了本地存储的&#xff08;LocalStorage)的概念后&#xff0c;很多人都会想这个东西和我们传统web开发中的Cookie有什么特别之处&#xff0c;当然笔者也是其中之一&#xff0c;也难怪&#xff0c;以前用惯了cookie对于新出现的事物总是…

java response 获得code_Java教程分享使用HttpClient抓取页面内容

Java教程分享使用HttpClient抓取页面内容&#xff0c;使用HttpClient工具来发送Http请求1.简介HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新的版本和…

linux mysql 5.6.23_MySQL 5.6.23升级到MySQL 5.7.9

MySQL 5.6.23升级到MySQL 5.7.9MySQL 5.7.9新特性一、安全性1.1. 用户表 mysql.user 的 plugin字段不允许为空&#xff0c; 默认值是 mysql_native_password&#xff0c;而不是 mysql_old_password&#xff0c;不再支持旧密码格式;1.2. 增加密码过期机制&#xff0c;过期后需要…

2018-03-02

1、首先我得重新在git设置一下身份的名字和邮箱&#xff08;因为当初都忘了设置啥了&#xff0c;因为遇到坑了&#xff09;进入到需要提交的文件夹底下&#xff08;因为直接打开git Bash&#xff0c;在没有路径的情况下&#xff0c;根本没&#xff01;法&#xff01;改&#xf…

查看环境变量有无配置成功等命令操作

查看环境变量有无配置成功 &#xff1a;windowR cmd set&#xff08;回车&#xff09; 现在可以看到配置成功的环境变量NVM_HOME NVM_SYMLINK等环境变量 也可以单独查看某个变量有无配置成功,例如set NVM—HOME. 转载于:https://www.cnblogs.com/JavascriptAndHtml5/p/9469932…

WildFly 8.0.0.Alpha1的发布和一些历史

自从我们发布WildFly 8.0.0.Alpha1版本以来&#xff0c; 已经过去了大约2周。 该下载位于WildFly下载页面上 。 我敢肯定&#xff0c;你们中的许多人可能会想知道WildFly是什么&#xff0c;而其中一些知道它是什么的人可能不会知道已经发布了。 我将尝试回答其中一些问题&#…

POJ 1276 Cash Machine

很容易看出来是一个背包问题&#xff0c;开始把每一张钞票都跑了一遍01背包&#xff0c;直接TLE了。 其实就是多重背包模板题。 1 //#include <bits/stdc.h>2 #include <iostream>3 #include <utility>4 #include <vector>5 #include <cstring>6…

导出mysql excel数据字典_mysql导出 Excel数据字典(全)

解决问题(有mysql数据库数据表想要将表导入到PowerDesigner 或导出Excel数据字典)一、下载工具1、工具PowerDesigner 百度自行下载安装2、mysql-connector-odbc 下载链接: https://pan.baidu.com/s/1cjb73f3GvkkMFAzZKi85xA 提取码: u5ih二、mysql数据库数据表想要将表导入到Po…

斐波那契数列算法小结

关于求解斐波那契数列&#xff0c;这是一道比较经典的题目&#xff0c;本文主要是对斐波那契数列求解方法的小结。 首先&#xff0c;定义Fibonacci数列如下&#xff1a; 方法1&#xff1a; 利用递归求解&#xff0c;这是最容易写出的算法&#xff0c;代码如下&#xff1a; #inc…

mysql yintint类型_MySQL服务器2 被嫌弃的胖子

1.sql的基本语法对数据库create database db1;  创建数据库对表&#xff1a;create database t1(id int,name char(10));  创建表show create table t1;  查看创建的t1表show tables;  查看所有的表desc t1;  查看表的详细结构对数据&#xff1a;insert into t1(id,n…