def frame(self, frame_reference) -> None: """ 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, str): 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})
def use_frame(locator): """Make following keywords to use frame on a page. Examples -------- .. code-block:: robotframework UseFrame //iframe Parameters ---------- locator : str Xpath expression without xpath= prefix or index (first = 1 etc.) Raises ------ NoSuchFrameException If the frame is not found """ frame.wait_page_loaded() try: index = int(locator) - 1 webelement = javascript.execute_javascript( 'document.querySelectorAll("iframe, frame")[{}]'.format(index)) except ValueError: webelement = element.get_unique_element_by_xpath(locator) driver = browser.get_current_browser() try: driver.switch_to_frame(webelement) except NoSuchFrameException: raise NoSuchFrameException('No frame wound with xpath: {0}'.format(locator))
def frame(self, index): if self.driver.current_frame is None: children = self.driver.frames else: children = self.driver.current_frame.children try: new_frame = children[index] except IndexError: raise NoSuchFrameException() else: self.driver.current_frame = new_frame
def switch(self, frame_name=None): try: if ((not frame_name) or (frame_name == 'relative=top')): self.driver.switch_to_default_content() elif frame_name.startswith('index='): self.driver.switch_to.frame(int(frame_name.split('=')[1])) elif (frame_name == 'relative=parent'): self.driver.switch_to.parent_frame() else: self.driver.switch_to.frame(frame_name) except NoSuchFrameException: raise NoSuchFrameException(('Invalid Frame ID: %s' % frame_name))
def switch(self, frame_name=None): try: if not frame_name or frame_name == "relative=top": self.driver.switch_to_default_content() elif frame_name.startswith("index="): # Switch using index frame using relative position self.driver.switch_to.frame(int(frame_name.split("=")[1])) elif frame_name == "relative=parent": # Switch to parent frame of the current frame self.driver.switch_to.parent_frame() else: # Use the selenium alternative self.driver.switch_to.frame(frame_name) except NoSuchFrameException: raise NoSuchFrameException("Invalid Frame ID: %s" % frame_name)
def frame(self, index): if self.num_allowed_frame_switches > 0: self.num_allowed_frame_switches -= 1 return super(TargetLocatorFailingAfterNFrameSwitches, self)\ .frame(index) raise NoSuchFrameException()