明明元素就在那,firebug也可以看到,但是無(wú)論怎么定位還是定位不到的時(shí)候,需要檢查下頁(yè)面是否含有iframe,你需要定位的元素是否在iframe之中,有可能就是因?yàn)閕frame的問(wèn)題。在一個(gè)default content中查找一個(gè)在iframe 中的元素,那肯定是找不到,同樣你在一個(gè)iframe 中查找另一個(gè)iframe元素或default content中的元素,那必然也定位不到
切換到frame之中
selenium提供了switch_to_frame()方法來(lái)切換frame,
如
driver.switch_to.frame(reference)
reference是傳入的參數(shù),用來(lái)定位frame,可以傳入id、name、index以及selenium的WebElement對(duì)象
reference一般輸id,但是也有動(dòng)態(tài)id的情況,可以使用xpath定位,然后傳入WebElement對(duì)象
從frame之中切換到default content主文檔
切換進(jìn)入frame之中后,我們就不能對(duì)主文檔的元素進(jìn)行操作了,如果需要操作,那么我們只能再切換回去
driver.switch_to.default_content()
遇到嵌套的frame
遇到嵌套的frame的時(shí)候,也就是一個(gè)frame里面還有一個(gè)frame的時(shí)候,我們要一層一層切換進(jìn)去,如
driver.switch_to.frame("frame1")
driver.switch_to.frame("frame2")
如果我們已經(jīng)切換到frame2中,那么我們要返回frame之中怎么辦。selenium為我們提供了一個(gè)后退的方法。
driver.switch_to.parent_frame()
如果當(dāng)前已經(jīng)是主文檔了,那么后退沒(méi)有效果