【selenium3+JAVA】介面自動化測試教程(七)——frame切換方法
阿新 • • 發佈:2019-02-12
在selenium的使用過程中,有時候會發現網站會有frame這種東西,如果某個元素在frame中,直接進行查詢是無法查詢到的,那麼這時候就需要先切換frame再進行元素查詢;
1.切換到頂層frame:
driver.switchTo().defaultContent();
2.通過frame編號切換到frame
通過該frame的編號來進行切換,從1開始,程式碼如下:
driver.switchTo().frame(n);
n為該frame的編號;
3.通過frame的id或者name切換
如果該frame有id或者name屬性,則可以直接用如下方法(frameId為該元素的id屬性值):
driver.switchTo().frame(frameIdOrName);
封裝方法如下:
/**切換frame
* @param frameId 為該frame的id屬性值或者name屬性值
*/
public static boolean switchFrame_Into(String frameId)
{
if(frameId.equals(""))
{
driver.switchTo().defaultContent();
return true;
}else
{
if(driver.findElement(By.id("\""+frameId+ "\"")) != null)
{
driver.switchTo().frame(frameId);
return true;
}
LogUtil.error("進入iFrame:"+frameId+" 失敗");
return false;
}
}
4、直接定位到元素切換
通過元素直接切換
WebElement element = driver.findElement(By.id("a");
driver.switchTo().frame(element);
可以使用如下封裝方法
public static boolean switchToFrame (By frame)
{
if(frame == null )
{
driver.switchTo().defaultContent();
return true;
}else
{
if(driver.findElement(frame))
{
driver.switchTo().frame(findElement(frame));
return true;
}else
{
return false;
}
}
}
5.切換到父frame
使用方法:
driver.switchTo().parentFrame();
此方法可以切換到當前所在frame的父級frame;
6.多層frame切換
如果遇到多層frame的情況,如有三層frame:
frame A
------------frame B
-----------------------frame C
則如果想要進入C,則必須先進入frame A,再進入frame B,才能進入frame C;
如果呼叫driver.switchTo().defaultContent();
則會直接跳轉回頂層frame,即最外層的body部分;