使用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(BasicLevel)-1010 一元多项式求导
一.题目和题意分析 设计函数求一元多项式的导数.x^n [n为整数] 的一阶导数为nx^(n−1). 输入格式: 以指数递降方式输入多项式非零项系数和指数(*绝对值均为不超过 1000 的整数*).数 ...
- 《Java程序设计》实验三(敏捷开发与XP实践)20155214 实验报告
<JAVA程序设计> 实验三(敏捷开发与XP实践) 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>< ...
- 20155215宣言 实验三 敏捷开发与XP实践 实验报告
实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实 ...
- Linux系统运维基础管理命令总结
1.查看系统负载命令:w.uptime [root@localhost ~]# w :: up days, :, user, load average: 0.00, 0.01, 0.05 USER T ...
- Arduino 101/Genuino101使用-第一篇
1. 函数API说明文档在哪里? 2. 如果我想定义一个引脚做GPIO,不是库里有的. 3. digitalWrite(13, lighting); 这个函数里面 13代表的是啥? 4. setup( ...
- 【Windows定时关机】windows实现定时关机与取消
背景:本人昨晚本来打算将电脑设置为晚上12点 30定时关机,结果写成了:12:30,所以就在刚才,我正玩游戏的时候, 电脑弹出提示:“windows将在一分钟内关闭”,我刚开始一脸懵逼,后来打开昨天敲 ...
- WPF DrawingContext Pen
<Window x:Class="WPFDrawing.MainWindow" xmlns="http://schemas.microsoft.com/winfx/ ...
- 【转】glumer Appium + Python环境搭建(移动端自动化)
最近整理了一下自动化的东西,好久没搭建环境又踩了不少坑,appium的环境搭建比较繁琐,好多同行估计都在环境上被卡死了.分享一下~~ 一.安装JDK,配置JDK环境 百度搜索下载就行,这里分享一 ...
- Django——多网页网站及网页互联
在helloapp文件夹下添加名为templates的文件夹(此文件夹名称是固定的),并在其下添加html文件,文件内容根据自己网页想呈现的内容而定 在views文件内添加新的函数 在urls文件内添 ...
- 微信 msg_sec_check接口PHP 调用
$checkContent = '要检测的内容'; $url = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token='. $res[& ...