want8023 发表于 2014-12-25 09:44:39

求解:selenium webdriver中frame切换问题

本帖最后由 want8023 于 2014-12-25 10:05 编辑

=============
........
driver.switch_to_frame("iframe1")
driver.switch_to_frame("iframe2")
driver.find_element_by_id("XX").click()
......
现在想切换回到iframe1框架下定位元素,如何充iframe2切回iframe1下
小白,刚学不久,希望大神指点迷津.....感激不尽!
dr.switchTo().defaultContent() 提示在python下提示没有

joykao 发表于 2014-12-25 10:30:48

同样的做法呀,你怎么切到2的再怎么切到1啊

log_1 发表于 2015-2-3 09:26:32

Python下不要使用switch_to_frame,最好使用switch_to方法,例如:switch_to().frame("iframe1"),Python下的selenium的frame定位,如果是在一个页面中存在多个iframe,直接通过name(或者其他方式)定位,如果是多级的弹出层,那么需要一级一级的定位,反之也是一样。
下面是同一个页面的frame定位:
driver.switch_to().frame("frame1")
driver.switch_to().frame("frame2")
......
如果需要回到frame1,直接使用定位方法
driver.switch_to().frame("frame1")

wyz_testing 发表于 2015-2-7 20:37:46

楼上正解

lxl521999 发表于 2015-12-23 19:28:58

log_1 发表于 2015-2-3 09:26
Python下不要使用switch_to_frame,最好使用switch_to方法,例如:switch_to().frame("iframe1"),Python下 ...

问一下   为什么我用你说的方法报如下错误呢

driver.switch_to().frame("topFrame")
AttributeError: SwitchTo instance has no __call__ method

prettyfool 发表于 2015-12-23 20:35:39

你是从一个defaultContent()下切换到frame1()是,正常情况应该是进入页面后,可以直接切换到frame1或者frame2 。如果切换到frame1后,需要先切换到defaultContent再切换到frame2。java下是这样写的,python应该跟这个一样

lxl521999 发表于 2015-12-24 14:42:13

prettyfool 发表于 2015-12-23 20:35
你是从一个defaultContent()下切换到frame1()是,正常情况应该是进入页面后,可以直接切换到frame1或者fr ...

先switch到defaultcontent 再切换也不行,它的层级关系类似于
frameset
   topframe
   frameset
         leftframe

wys702a8 发表于 2016-3-17 14:22:28

lxl521999 发表于 2015-12-23 19:28
问一下   为什么我用你说的方法报如下错误呢

driver.switch_to().frame("topFrame")


driver.switch_to.frame("topFrame")
页: [1]
查看完整版本: 求解:selenium webdriver中frame切换问题