WebDriver 跳轉新增頁面和返回原頁面-點擊某一按鈕新增click,並切換頁面

應用場景:
對於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();         }                 }    
相關文章
相關標籤/搜索