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 using switch_to.frame(framename) in sequence 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.