Selenium的一些常用操作
阿新 • • 發佈:2019-01-24
- 如果在原頁面點選打開了新的頁面,如何對新頁面進行操作呢?
答:使用switchTo.window
使用方法:以下程式碼只是獲取到了當前視窗的控制代碼,切換到了當前視窗,這樣並不能解決問題
String currentWindow = driver.getWindowHandle();
driver.switchTo.window(currentWindow);
進一步思考:需要使用getWindowHandles獲取所有視窗的控制代碼;注意:每次開啟同一視窗,Window控制代碼值都不同,getWindowHandle是獲取當前視窗的控制代碼
下面程式碼即可實現driver切換到新開啟的視窗,從而對新視窗的元素等進行操作。
for(String winHandle:driver.getWindowHandles){
driver.switchTo.window(winHandle);
}
- 在定位頁面元素時,使用的方法明明沒有錯,卻怎麼也定位不到元素怎麼辦?
答:可能頁面中嵌套了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
//注意:最好使用第2,3種方法進行切換
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;
- 常用系統事件操作,如下圖所示:
使用案例如下:
Actions builder = new Actions(driver);
Actions act = builder.clickAndHold(SomeElement).moveToElement(otherElement).release(otherElement).build();
act.perform;
使用注意事項:Action物件的動作鏈應該儘量短,使用時最好在執行一個簡短的動作後驗證頁面是否處於正確的狀態,然後再執行後面的動作