操作Frame和IFrame中頁面元素
阿新 • • 發佈:2017-09-12
如果 ebe 普通 ros def 當前 包含 div 內聯
HTML <iframe> 標簽
定義:iframe 元素會創建包含另外一個文檔的內聯框架(即行內框架)。
frame標簽有frameset、frame、iframe三種,frameset跟其他普通標簽沒有區別,不會影響到正常的定位
而frame與iframe對selenium定位而言是一樣的,selenium有一組方法對frame進行操作。
1、怎麽切到frame中(switch_to.frame())
selenium提供了switch_to.frame()方法來切換frame
switch_to.frame(reference):reference是傳入的參數,用來定位frame,可以傳入id、name、index以及selenium的WebElement對象
通常采用id和name就能夠解決絕大多數問題。但有時候frame並無這兩項屬性,用xpath定位,傳入WebElement對象
舉個例子:
<iframe src="myframetest.html" />
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,‘myframe‘)]")));
2、從frame中切回主文檔(switch_to.default_content())
切到frame中之後,我們便不能繼續操作主文檔的元素,這時如果想操作主文檔內容,則需切回主文檔。
driver.switch_to.default_content()
3、嵌套frame的操作(switch_to.parent_frame())
有時候我們會遇到嵌套的frame,如下:
<html> <iframe id="frame1"> <iframe id="frame2" / > </iframe> </html>
***從主文檔切到frame2,一層層切進去***
driver.switch_to.frame("frame1") driver.switch_to.frame("frame2")
driver.switch_to.parent_frame() # 如果當前已是主文檔,則無效果
有了parent_frame()這個相當於後退的方法,我們可以隨意切換不同的frame,隨意的跳來跳去了。
所以只要善用以下三個方法,遇到frame分分鐘搞定:
driver.switch_to.frame(reference) driver.switch_to.parent_frame() driver.switch_to.default_content()
註意: iframe使用後必須跳出來,否則無法定位其它元素
跳出方法: driver.switchTo().defaultContent();
操作Frame和IFrame中頁面元素