Python Forum

Full Version: Unable to switch out of nested frames into main page
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have a program that does automated data entry on the PLM platform, ENOVIA, with specific information that I input. I'm using Selenium to navigate the webpage. There is a segment where the program has to enter 4 nested frames to click a certain element. It does that well and makes the necessary edits, the problem I'm facing is when I try to exit out of the frames back to the top of the HTML code to get back to the main page using switch_to.default_content(). For some reason, after it switches into the 4th child of the nested frames and makes these edits, I see that the window changes to only consist of these frames and whats within them, and nothing above the 1st parent frame. So switch_to.default_content() doesn't seem work.

This is the code that really matters, where it switches into the 4th and final frame "DSCObjectSummary" and makes these edits

def clickCheck(Method, Locator, elemName):
    #Add If Else to check for element availibility
    #Do Retries of searchess
        wait.until(EC.element_to_be_clickable((Method, Locator)))
        print(elemName + ' Clickable')
    except NoSuchElementException:
        print("Cannot Find Element")

...... Lots of code and comes to this point
    #Switching into 4 nested frames to click "EDIT DETAILS" Button
    clickCheck(By.ID, 'DSCEditObjectSummary', "Edit Details")
    elemEdit = browser.find_element_by_id("DSCEditObjectSummary")

    #Click the Customer Dropdown
    clickCheck(By.ID, "PMCCustomerId", "Customer Dropdown")
    elemCust = browser.find_element_by_id("PMCCustomerId")
    """Add If Conditions to check part number"""

    #Click Document Type Field
    clickCheck(By.ID, "PMCDocumentTypeId", "Document Type")
    elemDoc = browser.find_element_by_id("PMCDocumentTypeId")

    """Add Check to see if part is Active/Obsol, if Obs, make Active"""

    #Click Dashnumber field
    clickCheck(By.ID, "PMCDashNumber", "Dash Number")
    elemDash = browser.find_element_by_id("PMCDashNumber")

    #Click Done Button
    clickCheck(By.CSS_SELECTOR, "button[class='btn-primary'][type='button']", "Done Button")
    elemDone = browser.find_element_by_css_selector("button[class='btn-primary'][type='button']")

I have tried switching backwards from 4th to 1st parent frame then using switch_to.default_content() only to be thrown a NoSuchFrameException. All I want is to be able to get back out of the frames, just like I got into them, without changing/removing anything in the window and get back to the top level HTML.

I have realized that the window only changes when I try to interact with the elements in the 4th nested frame using commands such as send_keys() or click(). Other than that, if I stop at only accessing the frame, I am able to exit out of them perfectly fine back into the top level using default_content() and interact with other elements outside of these frames. Any ideas as to what could be causing this?