遍历frame中的表单 :

 package webDriverPro;

 import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait; import commUtil.Log;
import commUtil.OpenBrowserInfo; public class Demo2 {
public WebDriver driver; // 判断手机号码的合法性;
public static boolean regexp(String iphoneNumber) {
String regExp = "^[1]([3][0-9]{1}|59|58|88|89|52|30|87)[0-9]{8}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(iphoneNumber);
return m.find();
} public Demo2(WebDriver driver) {
this.driver = driver;
} // 登陆
public void login() {
WebElement username = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("username"));
}
}));
username.sendKeys("admin");
Log.info("----------------------------输入用密码-------------------------------------");
WebElement password = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("password"));
}
}));
password.sendKeys("admin");
Log.info("----------------------------点击登录按钮-------------------------------------");
WebElement loginbutton = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.xpath("html/body/div/form/div[2]/button"));
}
}));
loginbutton.click(); } // 点击系统管理和用户管理
public void ClicksysUserManager() {
Log.info("----------------------------点击系统管理-------------------------------------");
WebElement systemManage = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.xpath("html/body/section/div[1]/ul/li[5]/a"));
}
}));
systemManage.click();
;
Log.info("----------------------------点击用户管理-------------------------------------"); WebElement usermanage = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.xpath("html/body/section/div[1]/ul/li[5]/ul/li[1]/a"));
}
}));
usermanage.click();
driver.manage().window().maximize(); } // 遍历表单中所有内容
public void table1() {
// 查找frame
List<WebElement> iframes = driver.findElements(By.tagName("iframe"));
System.out.println("页面上共找到了" + iframes.size() + " 个iframe对象 !!");
WebElement frame = iframes.get(0);
// 进入frame
driver.switchTo().frame(frame);
// 共计条数和页数对象
String sumpage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[7]/span"))
.getText();
System.out.println("===========================" + sumpage + "共计多少页------------------------------------");
String totalCount = (sumpage.substring(sumpage.indexOf("共") + 1, sumpage.lastIndexOf("条")));
int totalRecord = Integer.parseInt(totalCount.trim());
int pageSize = 10;
int totalPageNum = (totalRecord + pageSize - 1) / pageSize;
System.out.println(
"---------------------------------总共有 :" + totalPageNum + "页 !---------------------------------------");
// 下一页对象;
WebElement nextPage;
// 遍历表单
for (int k = 1; k <= totalPageNum; k++) {
Log.info("当前是第" + k + " 页!");
nextPage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[6]/a"));
List<WebElement> tables = driver.findElements(By.tagName("table"));
System.out.println("iframes 中共找到了 " + tables.size() + " 个tables !");
WebElement table = tables.get(0);
List<WebElement> rows = table.findElements(By.tagName("tr"));
for (WebElement row : rows) {
List<WebElement> cols = row.findElements(By.tagName("td"));
for (WebElement col : cols) {
System.out.print("|");
System.out.print(col.getText() + " |");
}
System.out.println("");
}
// 判断当前是第几页,如果是最后一页不执行点击下一页
if (k == totalPageNum) {
break;
} else {
nextPage.click();
System.out.println("点击次数=" + k + " ;");
}
// driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
OpenBrowserInfo.ThreadSleep();
} // return null;
} // 判断手机号码是否合规
public void iphoneNumberIsTrue() { // 查找frame
List<WebElement> iframes = driver.findElements(By.tagName("iframe"));
System.out.println("页面上共找到了" + iframes.size() + " 个iframe对象 !!");
WebElement frame = iframes.get(0);
// 进入frame
driver.switchTo().frame(frame);
// 共计条数和页数对象
String sumpage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[7]/span"))
.getText();
System.out.println("===========================" + sumpage + "共计多少页------------------------------------");
String totalCount = (sumpage.substring(sumpage.indexOf("共") + 1, sumpage.lastIndexOf("条")));
int totalRecord = Integer.parseInt(totalCount.trim());
int pageSize = 10;
int totalPageNum = (totalRecord + pageSize - 1) / pageSize;
System.out.println(
"---------------------------------总共有 :" + totalPageNum + "页 !---------------------------------------");
// 下一页对象;
WebElement nextPage;
// 遍历表单
for (int k = 1; k <= totalPageNum; k++) {
Log.info("当前是第" + k + " 页!");
nextPage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[6]/a"));
List<WebElement> tables = driver.findElements(By.tagName("table"));
System.out.println("iframes 中共找到了 " + tables.size() + " 个tables !");
WebElement table = tables.get(0);
List<WebElement> rows = table.findElements(By.tagName("tr"));
for (int i = 0; i < rows.size(); i++) {
List<WebElement> cols = rows.get(i).findElements(By.tagName("td"));
for (int j = 0; j < cols.size(); j++) {
// 获取手机号并判断手机号的合法性;
if (5 == j) {
String iphoneNumber = cols.get(j).getText();
if (!Demo2.regexp(iphoneNumber)) {
System.out.println(iphoneNumber + "-- 不合法的手机号 !");
}
} }
}
// 判断当前是第几页,如果是最后一页不执行点击下一页
if (k == totalPageNum) {
break;
} else {
nextPage.click();
System.out.println("点击次数=" + k + " ;");
}
// driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
OpenBrowserInfo.ThreadSleep();
}
} public static void main(String[] args) {
OpenBrowserInfo.fireFoxDriver();
WebDriver driver = new FirefoxDriver();
driver.get("http://139.196.180.205:8099/orient_new/");
Demo2 demo2 = new Demo2(driver);
OpenBrowserInfo.ThreadSleep();
demo2.login();
demo2.ClicksysUserManager();
demo2.table1();
//demo2.iphoneNumberIsTrue();
driver.close(); } }

运行结果:

使用selenium遍历frame中的表单信息 ;的更多相关文章

  1. 遍历frame中的表单:

    遍历frame中的表单: public void table1() { // 查找frame List<WebElement> iframes = driver.findElements( ...

  2. selenium - switch_to.frame()- 内嵌表单的切换

    表单嵌套frame/iframe webDriver只能在一个页面上对元素识别和定位,对于frame/iframe表单内嵌页面上的元素无法直接定位,此时就需要通过switch_to.frame()方法 ...

  3. 在springboot中验证表单信息(六)

    构建工程 创建一个springboot工程,由于用到了 web .thymeleaf.validator.el,引入相应的起步依赖和依赖,代码清单如下: 1 2 3 4 5 6 7 8 9 10 11 ...

  4. Spring Boot教程(六)在springboot中验证表单信息

    构建工程 创建一个springboot工程,由于用到了 web .thymeleaf.validator.el,引入相应的起步依赖和依赖,代码清单如下: <dependencies> &l ...

  5. SpringBoot非官方教程 | 第十九篇: 验证表单信息

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot19/ 本文出自方志朋的博客 这篇文篇主要简述如何 ...

  6. Python的Django框架中forms表单类的使用方法详解

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  7. JavaScript中的表单编程

    表单编程 1获取表单相关信息 1.什么是表单元素 1.什么是表单元素 在H TML中表单就是指form标签,它的作用是将用户输入或选择的数据提交给指定的服务器 2.如何获取表单元素 <form ...

  8. AngularJS中的表单验证

    AngularJS中的表单验证 AngularJS自带了很多验证,什么必填,最大长度,最小长度...,这里记录几个有用的正则式验证 1.使用angularjs的表单验证 正则式验证 只需要配置一个正则 ...

  9. MVC中处理表单提交的方式(Ajax+Jquery)

    MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...

随机推荐

  1. (补题 杭电 1008)Elevator

    Elevator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. Mac配置MySql

    MySql在Mac下的情况如下: 首先,我们进入MySql的官网下载MySql(直接点击即可),打开之后便是这样. 我们点击红色方框标记的内容,之后我等待下载完成. 下载完成之后,我们需要点点,注意一 ...

  3. Hystrix使用

    Hystrix是Netflix开源的一款容错系统,能帮助使用者码出具备强大的容错能力和鲁棒性的程序.如果某程序或class要使用Hystrix,只需简单继承HystrixCommand/Hystrix ...

  4. mybatsi中文乱码问题

    乱码问题:待总结,这里先贴出网友的博客: http://blog.csdn.net/zht666/article/details/8955952

  5. 20155233 《Java程序设计》实验四 Android开发基础

    20155233 <Java程序设计>实验四 Android开发基础 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android组件.布 ...

  6. 创建Springmvc项目时,特殊拦截器失效情况的原因及解决办法

    最近开发一个新项目时,搭建springmvc框架时,遇到一个拦截器失效的情况困扰了两天.现在解决,特此记录一下. 拦截器不生效的情况描述: 设置登录拦截的时候,首先登录接口肯定是不用拦截的.所以需要在 ...

  7. docker制作自己的镜像并上传dockerhub

    1.首先注册自己的dockerhub账号,注册地址:https://hub.docker.com 2.在linux服务器登录自己的账号:docker login --username=qiaoyeye ...

  8. Spring学习(十二)-----Spring Bean init-method 和 destroy-method实例

    实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...

  9. HTTP简单教程

    目录 HTTP简介 HTTP工作原理 HTTP消息结构 客户端请求消息 服务器响应消息 实例 HTTP请求方法 HTTP响应头信息 HTTP状态码 HTTP状态码分类 HTTP状态码列表 HTTP c ...

  10. Linux 安装FastDFS<单机版>(使用Mac远程访问)

    阅读本文需要先阅读安装FastDFS<准备> 一 编译环境 yum install gcc-c++ yum -y install libevent yum install -y pcre ...