應用場景:
對於web端接收手機驗證碼的處理方法:
一、若是有權限能夠經過查詢數據庫來得到手機驗證碼,方便快捷。
二、若是後臺系統保存了手機驗證碼,能夠去後臺獲取驗證碼,而後填寫到前臺頁面,此方法有兩種處理方法
2.1 在前臺發送驗證碼的頁面,直接經過dr.get("http://www.xxx.com");切換頁面到後臺,查詢驗證碼並保存下來,再經過
dr.get("http://www.xxx.com");方法切換到前臺發送驗證碼頁面,充填以前填寫信息,此時不點擊發送手機驗證碼,直接輸入上次發送的手機驗證碼
2.2 可經過js以及切換頁面來實現,具體操做以下:
經過js給發送驗證碼的按鈕新增onclick()事件,onclick()事件可經過window.open("http://www.baidu.com");方法給按鈕新增從新打開一頁面方法,經過該方法在當前頁面後面新打開一個頁面(此時是打開後臺地址)
在第二個頁面得到驗證碼,此時關閉第二個頁面,返回第一個頁面輸入驗證碼,完成操做
主要對2.2 的方法進行詳細說明
對發送驗證碼按鈕新增onclick事件:
JavascriptExecutor js = (JavascriptExecutor)dr;
WebElement e = driver.findElement(By.xpath(".//*[@id='lg']/img"));
js.executeScript("arguments[0].onclick=function(){window.open('http://t0.gomemyc.com:8080/admin/message/listAll')}",e);
切換到第二個頁面方法 //頁面跳轉到第二第三窗口 public void getHandle(WebDriver driver) { try { Thread.sleep(1500); String currentWindow = driver.getWindowHandle(); //獲取當前窗口句柄 System.out.println("當前:"+currentWindow); Thread.sleep(3000); Set<String> handles = driver.getWindowHandles(); //獲取最新窗口句柄 Iterator<String> it = handles.iterator(); while(it.hasNext()){ String next = it.next(); if(currentWindow.equals(next)) { System.out.println("第一次跳轉:"+next); continue; } WebDriver window = driver.switchTo().window(next); // aa = true; System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl()); } System.out.println("跳轉結束"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (NoSuchElementException ee) { // TODO Auto-generated catch block ee.printStackTrace(); }catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 切換到第二個頁面後,再得到驗證碼信息,此時再關閉第二個頁面,跳轉到第一個頁面 //此方法是將頁面跳轉到第一個窗口 public void getHandle2(WebDriver driver) { try { Thread.sleep(4000); String currentWindow = driver.getWindowHandle(); //獲得當前窗口句柄 System.out.println(driver.getCurrentUrl()); System.out.println("當前:"+currentWindow); Thread.sleep(1900); Set<String> handles = driver.getWindowHandles(); //獲得全部窗口句柄 Iterator<String> it = handles.iterator(); String next = it.next(); //此處是第一個窗口句柄 System.out.println("第一個窗口句柄:"+next); WebDriver window = driver.switchTo().window(it.next()); //跳轉第二個窗口 Thread.sleep(1900); window.close(); //關閉第二個窗口 Thread.sleep(1900); window = driver.switchTo().window(next); //此處跳轉到第一個窗口 System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl()); System.out.println("跳轉結束"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (NoSuchElementException ee) { // TODO Auto-generated catch block ee.printStackTrace(); }catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }