Unable to switch out of nested frames into main page - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Web Scraping & Web Development (https://python-forum.io/forum-13.html) +--- Thread: Unable to switch out of nested frames into main page (/thread-19868.html) |
Unable to switch out of nested frames into main page - abi17124 - Jul-17-2019 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 try: 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 wait.until(EC.frame_to_be_available_and_switch_to_it("content")) wait.until(EC.frame_to_be_available_and_switch_to_it("detailsDisplay")) wait.until(EC.frame_to_be_available_and_switch_to_it("portalDisplay")) wait.until(EC.frame_to_be_available_and_switch_to_it("DSCObjectSummary")) clickCheck(By.ID, 'DSCEditObjectSummary', "Edit Details") elemEdit = browser.find_element_by_id("DSCEditObjectSummary") elemEdit.click() #Click the Customer Dropdown clickCheck(By.ID, "PMCCustomerId", "Customer Dropdown") elemCust = browser.find_element_by_id("PMCCustomerId") elemCust.click() elemCust.send_keys("Ces") """Add If Conditions to check part number""" #Click Document Type Field clickCheck(By.ID, "PMCDocumentTypeId", "Document Type") elemDoc = browser.find_element_by_id("PMCDocumentTypeId") elemDoc.click() elemDoc.send_keys("MOD") """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") elemDash.click() elemDash.clear() elemDash.send_keys("-1") #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']") elemDone.click() browser.switch_to.default_content() time.sleep(20)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? |