通过Selenium提交表单只会返回原页面

3 投票
1 回答
1360 浏览
提问于 2025-04-17 23:11

我正在尝试使用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中查看源代码时,出现了下面的情况。

enter image description here

1 个回答

5

试试用 click() 代替 submit()

Submit is particularly useful for forms without submit buttons, e.g. single-input “Search” forms.

来源:- http://selenium.googlecode.com/git/docs/api/py/selenium/selenium.selenium.html?highlight=submit#selenium.selenium.selenium.submit

在你的情况下,有一个提交按钮,直接点击它就好了。

撰写回答