selenium 頁面元素定位之iframe裏面的元素定位(包括有無id、name的)

今天在寫一個功能的腳本時,發現部分部分元素老是定位不了,看了下頁面的html 發現元素原來在iframe裏,這個使用iframe的id和name屬性用switch_to_frame跳轉後就能夠定位了,可是發現部分iframe沒有id 和 name,忽然不知怎搞了,百度了下,發現下面這個文章不錯!html

-------------------------如下轉自:http://blog.sina.com.cn/s/blog_68f262210101mcxp.htmlweb

最近正在進行webdriver的web級自動化測試代碼的編寫,遇到一個問題:頁面有三個標籤,單擊一個標籤打開一頁,要對第二個標籤打開的頁面進行定位操做,但是老是定位不到。查看一下代碼,發現這個標籤打開的是一個新頁面,在iframe中嵌套着呢,因而在網上搜了一下相關的定位方法。測試

    例如,現有HTML代碼以下:
  1. main.html   
  2. <</span>html>  
  3.     <</span>head>  
  4.         <</span>title>FrameTest</</span>title>  
  5.     </</span>head>  
  6.     <</span>body>  
  7.     <</span>div id = "id1">this is a div!</</span>div>  
  8.         <</span>iframe id = "frame1"  frameborder="0" scrolling="no" style="left:0;position:absolute;" src = "frame.html"></</span>iframe>  
  9.     </</span>body>  
  10. </</span>html>   
  11.   
  12.   
  13. frame.html 
  14. <</span>html>  
  15.     <</span>head>  
  16.         <</span>title>this is a frame!</</span>title>  
  17.     </</span>head>  
  18.     <</span>body>  
  19.     <</span>div id = "div1">this is a div,too!</</span>div>  
  20.     <</span>label>input:</</span>label>  
  21.     <</span>input id = "input1"></</span>input>  
  22.     </</span>body>  
  23. </</span>html>
1.iFrame有ID 或者 name的狀況//進入id="frame1"的frame中,定位id="div1"的div和id="input1"的輸入框。dr.switchTo().frame("frame1");dr.findElement(By.id("div1"));dr.findElement(By.id("input1"))2.若是一個iFrame既沒有id,也沒有name,通用狀況// 定位frame位置,並選取frameWebElement frame=driver.findElement(By.xpath( "/html/body/div[2]/div[8]/div[2]/div[3]/div/div[2]/div/iframe" ));driver.switchTo().frame(frame);3.跳出iFrame//跳出frame,進入default content;從新定位id="id1"的divdr.switchTo().defaultContent();dr.findElement(By.id("id1"))
相關文章
相關標籤/搜索