使用Selenium+Python通过pop-up wind登录

2024-04-29 02:50:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python中的Selenium访问和登录以下网页:

'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)

当我运行它时,我收到以下错误:

^{pr2}$

基于其他stackoverflow线程,我认为我正确地处理了这个问题。有人能帮我吗?在


Tags: 代码importcomobjhttptimedrivergames
2条回答

试试看:

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

也不要用时间。睡觉()selenium中的模块,保持使用显式等待的习惯。在

您试图与之交互的元素位于另一帧中。使用inspector可以看到它们在<iframe id="disneyid-iframe" name="disneyid-iframe"

因此,在执行任何操作之前,您需要切换到该帧:

driver.switch_to_frame("disneyid-iframe")

然后执行您需要的操作(注意:我更正了定位器以使用type属性,因为我没有看到元素具有name属性)

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()

相关问题 更多 >