Использование Selenium + Python для входа через всплывающее окно - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь получить доступ и войти на следующую веб-страницу, используя Selenium в Python:

'http://games.espn.com/ffl/leagueoffice?leagueId=579054&seasonId=2018'

Когда открывается страница, появляется всплывающее окно с запросом учетных данных пользователя.,Код ниже - это то, что у меня есть.

import time
from selenium import webdriver

user = 'test_user'
pw = '*********'

url = 'http://games.espn.com/ffl/leagueoffice?leagueId=579054&seasonId=2018'

driver = webdriver.Chrome("C:\\Users\\abc\\Downloads\\chromedriver\\chromedriver.exe")

driver.get(url)

obj = driver.switch_to_alert

time.sleep(5)

obj.find_element_by_name('email').send_keys(user)
obj.find_element_by_name('password').send_keys(pw)

Когда я запускаю его, я получаю эту ошибку:

AttributeError: 'function' object has no attribute 'find_element_by_name'

Основываясь на других потоках stackoverflow, я думал, что подхожу к этому правильно.Может ли кто-нибудь помочь мне в этом?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Элементами, с которыми вы пытаетесь взаимодействовать, являются , расположенные в другом кадре .С помощью инспектора вы можете видеть, что они находятся внутри <iframe id="disneyid-iframe" name="disneyid-iframe"

Поэтому перед выполнением каких-либо действий вам нужно переключиться на этот кадр:

driver.switch_to_frame("disneyid-iframe")

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

driver.find_element_by_css_selector("input[type = 'email']").send_keys(user)
driver.find_element_by_css_selector("input[type = 'password']").send_keys(pw)

Не забудьте переключиться обратнов контекст по умолчанию после того, как вы закончите взаимодействовать с элементами из этого фрейма:

driver.switch_to.default_content()

0 голосов
/ 08 декабря 2018

Попробуйте и проверьте:

obj.find_element_by_xpath('//input[@type="email"]').send_keys(user)
obj.find_element_by_xpath('//input[@type="password"]').send_keys(user)

Также не используйте модуль time.sleep () в селене, сохраняйте привычку использовать явные ожидания.

...