繁体   English   中英

使用硒的NoSuchElementException

[英]NoSuchElementException using Selenium

我正在尝试学习python / webscraping,并想抓取我的银行对帐单,但是在通过硒帐户登录时遇到了麻烦。

这是我的代码:

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

调用find_element_by_name()方法时,出现NoSuchElementException find_element_by_name()

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"}

我不完全理解为什么会收到此错误,因为在检查网页时,登录元素显然存在。 非常感谢任何帮助/指针,谢谢!

我检查了网站的层次结构,登录表单位于frame
因此,您需要先选择它,然后再选择其中的任何内容,如下所示:

driver.get(base_url)

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

uname = driver.find_element_by_name('userId')

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

driver.switch_to.default_content()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM