使用selenium遍历frame中的表单信息 ;
遍历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中的表单信息 ;的更多相关文章
- 遍历frame中的表单:
遍历frame中的表单: public void table1() { // 查找frame List<WebElement> iframes = driver.findElements( ...
- selenium - switch_to.frame()- 内嵌表单的切换
表单嵌套frame/iframe webDriver只能在一个页面上对元素识别和定位,对于frame/iframe表单内嵌页面上的元素无法直接定位,此时就需要通过switch_to.frame()方法 ...
- 在springboot中验证表单信息(六)
构建工程 创建一个springboot工程,由于用到了 web .thymeleaf.validator.el,引入相应的起步依赖和依赖,代码清单如下: 1 2 3 4 5 6 7 8 9 10 11 ...
- Spring Boot教程(六)在springboot中验证表单信息
构建工程 创建一个springboot工程,由于用到了 web .thymeleaf.validator.el,引入相应的起步依赖和依赖,代码清单如下: <dependencies> &l ...
- SpringBoot非官方教程 | 第十九篇: 验证表单信息
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot19/ 本文出自方志朋的博客 这篇文篇主要简述如何 ...
- Python的Django框架中forms表单类的使用方法详解
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...
- JavaScript中的表单编程
表单编程 1获取表单相关信息 1.什么是表单元素 1.什么是表单元素 在H TML中表单就是指form标签,它的作用是将用户输入或选择的数据提交给指定的服务器 2.如何获取表单元素 <form ...
- AngularJS中的表单验证
AngularJS中的表单验证 AngularJS自带了很多验证,什么必填,最大长度,最小长度...,这里记录几个有用的正则式验证 1.使用angularjs的表单验证 正则式验证 只需要配置一个正则 ...
- MVC中处理表单提交的方式(Ajax+Jquery)
MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...
随机推荐
- PTA基础编程题目集6-5求自定类型元素的最大值 (函数题)
原题目: 本题要求实现一个函数,求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType. 函数接口定义: ElementType Max( ElementType S[], ...
- python学习笔记(一):基础知识点
defaultdict函数将所有值初始化为指定类型 from collections import defaultdict a = defaultdict(int) a[0] '' python按照引 ...
- PetaLinux安装及使用
Description/说明 PetaLinux版本:2016.4 操作系统版本:Ubuntu 16.04(如使用Ubuntu,墙裂建议使用16.04,其他版本官方手册并没有标明支持,可能会出现莫名其 ...
- document ready
https://developer.mozilla.org/zh-CN/docs/Web/Events/DOMContentLoaded https://github.com/addyosmani/j ...
- 2016-2017-2 《Java程序设计》课程总结 - 20155214
2016-2017-2 <Java程序设计>课程总结 - 20155214 目录 一.每周学习总结及实验报告链接汇总 二.代码托管 给出statistic.sh的运行结果,说明本学期的代码 ...
- 20155319《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20155319<Java程序设计>实验三(敏捷开发与XP实践)实验报告 一.实验内容及步骤 (一)使用Code菜单 在IDEA中使用工具(Code->Reformate Code) ...
- Ubuntu genymotion
官网注册帐号 下载genymotion-[VERSION]_[ARCH].bin 进入android studio In Android Studio, go to File > Setting ...
- Kettle数据源连接配置
说明: 通过(图3.1)我们可以看到创建数据源时需要配置相应的参数: Connection Name(必填):配置数据源使用名称,如:Rot_Source Host Name(必填):数据库主机IP地 ...
- 问题:python2.7 安装包失败,提示错误:Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)
问题描述: 使用pip安装包时报错,error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat) 环境: pyt ...
- Python接口测试实战3(上)- Python操作数据库
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...