1. 程式人生 > >Selenium的一些常用操作

Selenium的一些常用操作

  1. 如果在原頁面點選打開了新的頁面,如何對新頁面進行操作呢?
    答:使用switchTo.window
    使用方法:以下程式碼只是獲取到了當前視窗的控制代碼,切換到了當前視窗,這樣並不能解決問題
String currentWindow = driver.getWindowHandle();

driver.switchTo.window(currentWindow);

進一步思考:需要使用getWindowHandles獲取所有視窗的控制代碼;注意:每次開啟同一視窗,Window控制代碼值都不同,getWindowHandle是獲取當前視窗的控制代碼
下面程式碼即可實現driver切換到新開啟的視窗,從而對新視窗的元素等進行操作。

for(String winHandle:driver.getWindowHandles){
    driver.switchTo.window(winHandle);
}
  1. 在定位頁面元素時,使用的方法明明沒有錯,卻怎麼也定位不到元素怎麼辦?
    答:可能頁面中嵌套了frame或iframe元素,此時要先切換到該frame/iframe,使用switchTo.frame然後再對元素進行操作,該函式常用操作如下圖
driver.switchTo.frame(0);//使用frame座標來切換
driver.switchTo.frame("iframe");//使用frame的id或者name
driver.switchTo.frame(driver.findElement(By.id("iframe")) ); //切換到名為iframe的元素所在的frame //注意:最好使用第23種方法進行切換 driver.switchTo().defaultContent();//可切換回原來的框架,進行其它操作

這裡寫圖片描述
3. 操作過程中,該如何處理瀏覽器彈窗呢?
答:使用Alert alert = driver.switchTo().alert(),對於獲取到的alert物件的常用操作如下圖所示:
Alert alert = driver.switchTo().alert();
alert.accept();


這裡寫圖片描述

注意:只有在頁面出現彈窗才可以使用該方法;只有alert型別的彈窗才適用;在alert彈窗消除之前,無法對其他元素進行操作
4.selenium如何模擬滑鼠對元素的拖拽操作?
答:使用dragAndDrop,具體使用案例如下:

webElement source = driver.findElement(By.name("source"));
webElement target = driver.findElement(By.name("target"));
Actions act = new Actions(driver);
act.dragAndDrop(source,target).perform;
  1. 常用系統事件操作,如下圖所示:
    這裡寫圖片描述
    使用案例如下:
Actions builder = new Actions(driver);
Actions act = builder.clickAndHold(SomeElement).moveToElement(otherElement).release(otherElement).build();
act.perform;

使用注意事項:Action物件的動作鏈應該儘量短,使用時最好在執行一個簡短的動作後驗證頁面是否處於正確的狀態,然後再執行後面的動作