Невозможно получить доступ к полям формы - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь зайти на эту страницу с моими учетными данными: https://myibd.investors.com/secure/signin.aspx

Когда я "проверяю" его - я вижу форму класса gigya-login-form Но когда я "просматриваю источник", эта форманетЯ предполагаю, что форма загружается через JS (или что-то подобное).Я исследовал SO, но ни одно из решений не помогло.В основном люди советуют дождаться загрузки страницы

кода с ожиданием загрузки элемента в течение 30 с

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

url = 'https://myibd.investors.com/secure/signin.aspx'

driver = webdriver.Chrome()
driver.get(url)
myElem = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME, 'gigya-input-text')))

Возвращает TimeoutException: Сообщение: - что означает, чтоэлемент никогда не загружается.

Может ли кто-нибудь помочь мне заполнить эту форму и нажать кнопку "Отправить"?Спасибо!

UPD. Я также пытался зайти внутрь iframe, но это также не сработало :( код ниже

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("signin-iframe"))

username = driver.find_element_by_name("username")
username.send_keys("my_user_name")

Выдает ElementNotVisibleException: Сообщение: элемент не видим

1 Ответ

0 голосов
/ 14 мая 2018

Форма расположена внутри iframe, поэтому, чтобы иметь возможность обрабатывать поля ввода, вам нужно переключиться на этот iframe:

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("signin-iframe"))
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@aria-label="Email" and @placeholder="Email *"]')))
username.send_keys("my_user_name")
password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//input[@aria-label="Password" and @placeholder="Password *"]')))
password.send_keys("my_password")
username.submit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...