首先我们看一看方法
def switch_to_frame(self, frame_reference):
""" Deprecated use driver.switch_to.frame
"""
warnings.warn("use driver.switch_to.frame instead",
DeprecationWarning, stacklevel=2)
self._switch_to.frame(frame_reference)
然后看一看frame的方法。
def frame(self, frame_reference):
"""
Switches focus to the specified frame, by index, name, or webelement.
:Args:
- frame_reference: The name of the window to switch to, an integer representing the index,
or a webelement that is an (i)frame to switch to.
:Usage:
driver.switch_to.frame('frame_name')
driver.switch_to.frame(1)
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
"""
if isinstance(frame_reference, basestring) and self._driver.w3c:
try:
frame_reference = self._driver.find_element(By.ID, frame_reference)
except NoSuchElementException:
try:
frame_reference = self._driver.find_element(By.NAME, frame_reference)
except NoSuchElementException:
raise NoSuchFrameException(frame_reference)
self._driver.execute(Command.SWITCH_TO_FRAME, {'id': frame_reference})
可以看到,我们需要传入的数据所代表的意义。
frame_reference:window的名字,或者是一个代表下标的整数,或者是一个将要切换的web元素。下面给了案例。
第一个是字符串 frame_name
第二个是整数 frame下标
第三个是元素 elem然后根据代码 ,如果我们传入的是一个string类型的,那么会先进行id定位,然后再进行name定位。最后frame会称为整型的下标或者是一个element元素。
然后我们就可以在这个frame中进行查找定位元素等等相关的操作。
但是仍然是在同一个driver里面进行find_element等相关操作