Не могу щелкнуть элемент [селен] - PullRequest
0 голосов
/ 03 октября 2019

Я перепробовал все способы поиска элементов в документации по селенам, но не могу понять. Любая помощь приветствуется.

def protonmail_signup():
    browser.get('https://protonmail.com/signup')
    time.sleep(random.randint(10,15))
    free_acc = browser.find_element_by_class_name('panel-heading').click()
    time.sleep(random.randint(2,3))
    free_elem = browser.find_element_by_id('freePlan').click()
    time.sleep(random.randint(20,25))
    email_elem = browser.find_element_by_id('username').click()

Все отлично работает, кроме:

email_elem = browser.find_element_by_id('username').click()

1 Ответ

0 голосов
/ 03 октября 2019

Похоже, username находится внутри элемента iframe. Вам нужно будет переключиться на iframe, затем ввести текст имени пользователя:

# save main frame context so we can switch back later
main_frame = driver.current_window_handle

# Get the first iframe -- there are two
iframe = driver.find_elements_by_xpath("//iframe[@title='Registration form']")[0]

driver.switch_to.frame(iframe)

# enter email
email_elem = browser.find_element_by_id('username').click()

Затем вам нужно будет вернуться к основному фрейму для ввода пароля:

# switch back to main frame
driver.switch_to_window(main_frame)

#enter password next

Как уже упоминалось в моем комментарии, есть два вложенных iframe элемента. Первый [0] даст вам iframe, содержащий имя пользователя. Второй, вам нужно переключиться, чтобы вы могли нажать Create Account.

second_iframe = driver.find_elements_by_xpath("//iframe[@title='Registration form']")[1]

driver.switch_to.frame(second_iframe)

# click Create Account button
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...