我正在尝试学习python / webscraping并希望抓取我的银行对帐单,但我无法通过selenium登录我的帐号。
这是我的代码:
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()
:
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"}
我并不完全理解为什么我会收到此错误,因为当我检查网页时,登录元素显然存在。非常感谢任何帮助/指示,谢谢!
答案 0 :(得分:0)
我检查了网站的层次结构,登录表单位于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()