У меня есть программа, которая автоматически вводит данные на платформе PLM, ENOVIA, со специальной информацией, которую я ввожу. Я использую Selenium для навигации по веб-странице. Есть сегмент, где программа должна ввести 4 вложенных кадра, чтобы щелкнуть определенный элемент. Он делает это хорошо и вносит необходимые изменения. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь выйти из фреймов обратно в начало HTML-кода, чтобы вернуться на главную страницу с помощью switch_to.default_content(). . По какой-то причине, после того, как он переключается на 4-й дочерний элемент вложенных фреймов и вносит эти изменения, я вижу, что окно изменяется и состоит только из этих фреймов и того, что в них, и ничего выше 1-го родительского фрейма. Так что switch_to.default_content() не работает.
Это код, который действительно имеет значение, когда он переключается на 4-й и последний кадр «DSCObjectSummary» и вносит эти правки.
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)
Я попытался переключиться назад с 4-го на 1-й родительский фрейм, последовательно используя switch_to.frame(framename), а затем используя switch_to.default_content(), чтобы получить исключение NoSuchFrameException. Все, что я хочу, это иметь возможность вернуться из фреймов, как я попал в них, ничего не меняя/удаляя в окне, и вернуться к HTML верхнего уровня.
switch_to.default_content()
не работает? Как вы заключаете это? - person DebanjanB   schedule 17.07.2019