遍历frame中的表单 :
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 package webDriverPro; 2 3 import java.util.List; 4 import java.util.regex.Matcher; 5 import java.util.regex.Pattern; 6 7 import org.openqa.selenium.By; 8 import org.openqa.selenium.WebDriver; 9 import org.openqa.selenium.WebElement; 10 import org.openqa.selenium.firefox.FirefoxDriver; 11 import org.openqa.selenium.support.ui.ExpectedCondition; 12 import org.openqa.selenium.support.ui.WebDriverWait; 13 14 import commUtil.Log; 15 import commUtil.OpenBrowserInfo; 16 17 public class Demo2 { 18 public WebDriver driver; 19 20 // 判断手机号码的合法性; 21 public static boolean regexp(String iphoneNumber) { 22 String regExp = "^[1]([3][0-9]{1}|59|58|88|89|52|30|87)[0-9]{8}$"; 23 Pattern p = Pattern.compile(regExp); 24 Matcher m = p.matcher(iphoneNumber); 25 return m.find(); 26 } 27 28 public Demo2(WebDriver driver) { 29 this.driver = driver; 30 } 31 32 // 登陆 33 public void login() { 34 WebElement username = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() { 35 @Override 36 public WebElement apply(WebDriver driver) { 37 return driver.findElement(By.id("username")); 38 } 39 })); 40 username.sendKeys("admin"); 41 Log.info("----------------------------输入用密码-------------------------------------"); 42 WebElement password = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() { 43 @Override 44 public WebElement apply(WebDriver driver) { 45 return driver.findElement(By.id("password")); 46 } 47 })); 48 password.sendKeys("admin"); 49 Log.info("----------------------------点击登录按钮-------------------------------------"); 50 WebElement loginbutton = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() { 51 @Override 52 public WebElement apply(WebDriver driver) { 53 return driver.findElement(By.xpath("html/body/div/form/div[2]/button")); 54 } 55 })); 56 loginbutton.click(); 57 58 } 59 60 // 点击系统管理和用户管理 61 public void ClicksysUserManager() { 62 Log.info("----------------------------点击系统管理-------------------------------------"); 63 WebElement systemManage = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() { 64 @Override 65 public WebElement apply(WebDriver driver) { 66 return driver.findElement(By.xpath("html/body/section/div[1]/ul/li[5]/a")); 67 } 68 })); 69 systemManage.click(); 70 ; 71 Log.info("----------------------------点击用户管理-------------------------------------"); 72 73 WebElement usermanage = (new WebDriverWait(driver, 1000).until(new ExpectedCondition<WebElement>() { 74 @Override 75 public WebElement apply(WebDriver driver) { 76 return driver.findElement(By.xpath("html/body/section/div[1]/ul/li[5]/ul/li[1]/a")); 77 } 78 })); 79 usermanage.click(); 80 driver.manage().window().maximize(); 81 82 } 83 84 // 遍历表单中所有内容 85 public void table1() { 86 // 查找frame 87 List<WebElement> iframes = driver.findElements(By.tagName("iframe")); 88 System.out.println("页面上共找到了" + iframes.size() + " 个iframe对象 !!"); 89 WebElement frame = iframes.get(0); 90 // 进入frame 91 driver.switchTo().frame(frame); 92 // 共计条数和页数对象 93 String sumpage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[7]/span")) 94 .getText(); 95 System.out.println("===========================" + sumpage + "共计多少页------------------------------------"); 96 String totalCount = (sumpage.substring(sumpage.indexOf("共") + 1, sumpage.lastIndexOf("条"))); 97 int totalRecord = Integer.parseInt(totalCount.trim()); 98 int pageSize = 10; 99 int totalPageNum = (totalRecord + pageSize - 1) / pageSize; 100 System.out.println( 101 "---------------------------------总共有 :" + totalPageNum + "页 !---------------------------------------"); 102 // 下一页对象; 103 WebElement nextPage; 104 // 遍历表单 105 for (int k = 1; k <= totalPageNum; k++) { 106 Log.info("当前是第" + k + " 页!"); 107 nextPage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[6]/a")); 108 List<WebElement> tables = driver.findElements(By.tagName("table")); 109 System.out.println("iframes 中共找到了 " + tables.size() + " 个tables !"); 110 WebElement table = tables.get(0); 111 List<WebElement> rows = table.findElements(By.tagName("tr")); 112 for (WebElement row : rows) { 113 List<WebElement> cols = row.findElements(By.tagName("td")); 114 for (WebElement col : cols) { 115 System.out.print("|"); 116 System.out.print(col.getText() + " |"); 117 } 118 System.out.println(""); 119 } 120 // 判断当前是第几页,如果是最后一页不执行点击下一页 121 if (k == totalPageNum) { 122 break; 123 } else { 124 nextPage.click(); 125 System.out.println("点击次数=" + k + " ;"); 126 } 127 // driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 128 OpenBrowserInfo.ThreadSleep(); 129 } 130 131 // return null; 132 } 133 134 // 判断手机号码是否合规 135 public void iphoneNumberIsTrue() { 136 137 // 查找frame 138 List<WebElement> iframes = driver.findElements(By.tagName("iframe")); 139 System.out.println("页面上共找到了" + iframes.size() + " 个iframe对象 !!"); 140 WebElement frame = iframes.get(0); 141 // 进入frame 142 driver.switchTo().frame(frame); 143 // 共计条数和页数对象 144 String sumpage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[7]/span")) 145 .getText(); 146 System.out.println("===========================" + sumpage + "共计多少页------------------------------------"); 147 String totalCount = (sumpage.substring(sumpage.indexOf("共") + 1, sumpage.lastIndexOf("条"))); 148 int totalRecord = Integer.parseInt(totalCount.trim()); 149 int pageSize = 10; 150 int totalPageNum = (totalRecord + pageSize - 1) / pageSize; 151 System.out.println( 152 "---------------------------------总共有 :" + totalPageNum + "页 !---------------------------------------"); 153 // 下一页对象; 154 WebElement nextPage; 155 // 遍历表单 156 for (int k = 1; k <= totalPageNum; k++) { 157 Log.info("当前是第" + k + " 页!"); 158 nextPage = driver.findElement(By.xpath("html/body/div/div/div/section/div/form/div[2]/li[6]/a")); 159 List<WebElement> tables = driver.findElements(By.tagName("table")); 160 System.out.println("iframes 中共找到了 " + tables.size() + " 个tables !"); 161 WebElement table = tables.get(0); 162 List<WebElement> rows = table.findElements(By.tagName("tr")); 163 for (int i = 0; i < rows.size(); i++) { 164 List<WebElement> cols = rows.get(i).findElements(By.tagName("td")); 165 for (int j = 0; j < cols.size(); j++) { 166 // 获取手机号并判断手机号的合法性; 167 if (5 == j) { 168 String iphoneNumber = cols.get(j).getText(); 169 if (!Demo2.regexp(iphoneNumber)) { 170 System.out.println(iphoneNumber + "-- 不合法的手机号 !"); 171 } 172 } 173 174 } 175 } 176 // 判断当前是第几页,如果是最后一页不执行点击下一页 177 if (k == totalPageNum) { 178 break; 179 } else { 180 nextPage.click(); 181 System.out.println("点击次数=" + k + " ;"); 182 } 183 // driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 184 OpenBrowserInfo.ThreadSleep(); 185 } 186 } 187 188 public static void main(String[] args) { 189 OpenBrowserInfo.fireFoxDriver(); 190 WebDriver driver = new FirefoxDriver(); 191 driver.get("http://139.196.180.205:8099/orient_new/"); 192 Demo2 demo2 = new Demo2(driver); 193 OpenBrowserInfo.ThreadSleep(); 194 demo2.login(); 195 demo2.ClicksysUserManager(); 196 demo2.table1(); 197 //demo2.iphoneNumberIsTrue(); 198 driver.close(); 199 200 } 201 202 }
运行结果: