通过Selenium提交表单只会返回原页面
我正在尝试使用Selenium登录一个网站,这个网站是http://projecteuler.net/login。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://projecteuler.net/login')
username = browser.find_element_by_id('username')
username.send_keys(USERNAME_HERE)
password = browser.find_element_by_name('password')
password.send_keys(PASSWORD_HERE)
browser.find_element_by_name("login").submit()
我的程序在最后一条语句之前都运行得很好。我试着去掉最后一条语句,然后手动登录,结果是成功的。但是当我加上最后一条语句并运行程序时,页面似乎只是重新加载了一遍,但我通过程序输入的信息却没有了。
所以,问题只出在提交表单这一步。我查看了页面源代码,确认没有其他同名的元素,但确实没有其他名为“login”的元素。那么我哪里出错了呢?我还需要注意其他什么吗?
还有一件奇怪的事情。当我通过代码提交表单后,在Google Chrome 33.0.1750.154 m中查看源代码时,出现了下面的情况。

1 个回答
5
试试用 click()
代替 submit()
Submit is particularly useful for forms without submit buttons, e.g. single-input “Search” forms.
在你的情况下,有一个提交按钮,直接点击它就好了。