1. 程式人生 > >pyhon學習之selenium巢狀定位frame

pyhon學習之selenium巢狀定位frame

首先我們看一看方法

    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等相關操作