мое первое сообщение. Приносим извинения заранее за любые промахи.Невозможно переключиться в рамки - продолжайте получать AttributeError
Я пишу на Python, используя Selenium, пытаясь очистить некоторую информацию с некоторых веб-страниц.
Я не могу решить эту головоломку после двух дней поиска-поиска.
Моя проблема в этом; при попытке войти на сайт w/Selenium/Python, я не могу «найти элемент» для входа. После долгих поисков я понимаю, что мне может понадобиться переключить кадры, чтобы найти элемент. Я попытался switchTo
(или switch_to) приказываю многие различные способы - и я получаю сообщение
"Attribute error: SwitchTo instance has no call method".
Я вывешу самый последнюю попытку (пожалуйста, дайте мне знать, если я могу предоставить любую дополнительную информацию):
в селеном:
waitUntilReady(browser)
browser.switch_to().frame(browser.findElement(By.ID("iframe[id='credentials']")))
elem = WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.NAME, "Ecom_User_ID")))
elem = browser.find_element_by_name("Ecom_User_ID")
elem.send_keys("frustrated")
Что получает возвращается (в терминале):
File "someproj.py", line 56, in browser.switch_to().frame(browser.findElement(By.ID("iframe[id='credentials']"))) AttributeError: SwitchTo instance has no call method
HTML сайт Форма:
<!DOCTYPE html>
<html lang="en" webdriver="true">
<head></head>
<body onload="onloadhandler()">
<div class="m-header"></div>
<div class="container">
<div class="header"></div>
<div class="ten columns">
<h2></h2>
<iframe id="loginsubtab" height="375" frameborder="0" width="100%" src="/nidp/jsp/content.jsp?sid=0&id=289&sid=0" scrolling="no">
#document
<!DOCTYPE html>
<html lang="en" webdriver="true">
<head></head>
<body onload="onloadhandler('selectedCard')">
<div id="content">
<table border="0" width="100%">
<tbody>
<tr>
<td>
<iframe id="credentials" height="375" frameborder="0" width="100%" src="/nidp/saml2/sso?id=289&sid=0&option=credential&sid=0" scrolling="no">
#document
Большое спасибо за любые идеи или рекомендации !!!
'browser.switch_to.frame (browser.find_element_by_id ('loginsubtab')) browser.switch_to.frame (browser.find_element_by_id ('credentials')) 'Yo! Оно работает!!!!!!!! Большая большая любовь к тебе. Спасибо!!! – Christine
@ Saifur - прежде чем идти, как только я доберусь до следующей страницы, мне нужно переключиться обратно? и если бы я остался на той же странице, я бы просто сделал switch_from.? – Christine
Да, на той же странице вам нужно вернуться к исходному кадру. Вам нужно использовать 'driver.switch_to.default_content'. См. [Doc] (https://selenium-python.readthedocs.org/api.html?highlight=frame#selenium.webdriver.remote.webdriver.WebDriver.switch_to_default_content) – Saifur