#python #html #selenium #authentication #automation
#питон #HTML #селен #идентификация #автоматизация
Вопрос:
Я хочу войти на форум, уже обошел сообщение cookie, переключившись на его iframe, но я не могу получить доступ ни к чему на странице. Это мой код:
#set path, open firefox path = r'C:UsersAnwenderDownloadsgeckodriver-v0.30.0-win64geckodriver.exe' driver = webdriver.Firefox(executable_path=path) #open bym forum driver.get('https://www.bym.de/forum/') driver.maximize_window() #deal with cookie wait = WebDriverWait(driver,20) wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='SP Consent Message']"))) wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button[title='Zustimmen']"))).click() driver.implicitly_wait(30)
Пока все идет хорошо. Теперь появляется тонна объявлений. Я пытаюсь войти в систему:
username = driver.find_element_by_id('navbar_username') username.send_keys("name") password = driver.find_element_by_id('navbar_password') password.send_keys("pw") driver.find_element_by_xpath("/html/body/div[1]/div[2]/main/div[3]/div[1]/ul/li[2]/form/fieldset/div/div/input[4]").click()
Я пробовал разные варианты этого, используя селектор css или xpath. Не сработало. Затем я попробовал подождать 20 секунд, пока все загрузится. Не сработало. Я попытался получить доступ к другому элементу (к подфоруму). Не сработало. Я пытался:
try: wait.until( EC.presence_of_element_located((By.ID, "navbar_username")) ) finally: driver.quit()
Селен просто не может найти этот элемент, браузер просто закрыт. Я искал iframes, но не смог найти их в html. Возможно ли, что я даже не нахожусь в главном «окне»? «Подстава»? «Сайт»? Я не знаю, как это назвать.
Любая помощь будет очень признательна!
Ответ №1:
Вы переключились на iframe и закрыли его, но так и не переключились обратно! Селен все еще находится в закрытом и отсутствующем iframe. Переключитесь обратно на главную страницу, используя:
driver.switch_to.default_content()