首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用硒的NoSuchElementException

使用硒的NoSuchElementException
EN

Stack Overflow用户
提问于 2018-01-16 21:15:39
回答 1查看 130关注 0票数 0

我正在尝试学习python/webscraping,并且想刮我的银行结单,但是在通过selenium登录到我的by帐户时遇到了困难。

这是我的代码:

代码语言:javascript
复制
from selenium import webdriver

username = 'XXXXXXXX'
password = 'XXXXXXXX'
base_url = 'https://www.onlinebanking.pnc.com/alservlet/PNCOnlineBankingServlet'

driver = webdriver.Chrome()
driver.get(base_url)
uname = driver.find_element_by_name('userId')
uname.send_keys(username)

passw = driver.find_element_by_name('password')
passw.send_keys(password)

submit_button = driver.find_element_by_class_name('formButton').click()

driver.quit()

当我调用NoSuchElementException方法时,我得到了一个find_element_by_name()

代码语言:javascript
复制
NoSuchElementException                    Traceback (most recent call last)
<ipython-input-5-e5d0b6d323ff> in <module>()
     11 driver = webdriver.Chrome()
     12 driver.get(base_url)
---> 13 uname = driver.find_element_by_name('userId')
     14 uname.send_keys(user)
     15 

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"userId"}

我不太明白为什么我会收到这个错误,因为当我检查网页时,登录元素显然存在。任何帮助/指示都是非常感谢的,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 21:53:28

我检查了网站的层次结构,登录表单在frame中。

因此,在选择内部任何内容之前,您需要切换到它,如下所示:

代码语言:javascript
复制
driver.get(base_url)

driver.switch_to.frame('center')  # 'center' is the name of the frame

uname = driver.find_element_by_name('userId')

如果您需要切换回去,您可以这样做:

代码语言:javascript
复制
driver.switch_to.default_content()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48289959

复制
相关文章

相似问题

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