1. 程式人生 > >操作Frame和IFrame中頁面元素

操作Frame和IFrame中頁面元素

如果 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中頁面元素