首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium登录ESPN

使用Selenium登录ESPN
EN

Stack Overflow用户
提问于 2015-10-25 05:17:42
回答 1查看 1.3K关注 0票数 1

我正在尝试使用Selenium来自动化ESPN上的一些任务,而且我首先需要登录到我的帐户,因为当我试图访问ESPN页面时,我会被重定向到登录页面。这是登录表单:

代码语言:javascript
复制
<form name="loginForm" method="post" action="https://r.espn.go.com/espn/memberservices/pc/login">
<input type="hidden" name="failedAttempts" value="2">
<input type="hidden" name="SUBMIT" value="1">
<input type="hidden" name="failedLocation" value="http://games.espn.go.com/ffl/signin?redir=http%3A%2F%2Fgames.espn.go.com%2Fffl%2Ffreeagency%3FteamId%3D1%26leagueId%3D39669&e=1">
<input type="hidden" name="aff_code" value="espn_fantgames">
<input type="hidden" name="appRedirect" value="http://games.espn.go.com/ffl/freeagency?teamId=1&leagueId=39669">
<input type="hidden" name="cookieDomain" value=".go.com">
<input type="hidden" name="multipleDomains" value="true">
<NOSCRIPT><input type=hidden name=noscript value=true></NOSCRIPT>
<table width=100% border=0 cellpadding=0 cellspacing=0 class="bodyCopy"><tr>
<td width=15%><b>MEMBER NAME:</b></td>
<td width=1%>&nbsp;&nbsp;</td>
<td><input name="username" size="16" maxlength="64" value="" class="select"></td>
</tr>
<tr>
<td><b>PASSWORD:</b></td>
<td>&nbsp;&nbsp;</td>
<td><input type="password" name="password" size="16" maxlength="25" value="" class="select"></td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
<td><input type="submit" name="submit" value="Log In" class="select"></td>
</tr>
</form>

下面是我的python程序:

代码语言:javascript
复制
import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0

driver = webdriver.Chrome()
driver.get("http://games.espn.go.com/ffl/signin?redir=http%3A%2F%2Fgames.espn.go.com%2Fffl%2Ffreeagency%3FteamId%3D1%26leagueId%3D39669")

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

password = driver.find_element_by_name("password")
password.send_keys("*******")

当我试图找到“用户名”元素时,我会得到一个NoSuchElementException。我在网上查过了。其他人建议切换框架,然而,登录表单似乎不在另一个框架中。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 08:05:10

下面的代码对我来说很好--实现等待,在这种情况下,必须在任何DOM查询之前加载页面!

代码语言:javascript
复制
import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get("http://games.espn.go.com/ffl/signin")
#implement wait it is mandatory in this case
WebDriverWait(driver,1000).until(EC.presence_of_all_elements_located((By.XPATH,"(//iframe)")))
frms = driver.find_elements_by_xpath("(//iframe)")

driver.switch_to_frame(frms[2])
time.sleep(2)
driver.find_element_by_xpath("(//input)[1]").send_keys("username")
driver.find_element_by_xpath("(//input)[2]").send_keys("pass")
driver.find_element_by_xpath("//button").click()
driver.switch_to_default_content()
time.sleep(4)
driver.close()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33326459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档