Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用Selenium登录_Python_Selenium_Web Crawler - Fatal编程技术网

Python 无法使用Selenium登录

Python 无法使用Selenium登录,python,selenium,web-crawler,Python,Selenium,Web Crawler,我正在使用Selenium+Python 2.7堆栈。 我想登录论坛,抓取帖子数据,用于学术研究目的。我使用以下代码填写登录表单: username = browser.find_element_by_xpath("//input[@id='navbar_username']") username.clear() username.send_keys("####") password = browser.find_eleme

我正在使用Selenium+Python 2.7堆栈。
我想登录论坛,抓取帖子数据,用于学术研究目的。我使用以下代码填写登录表单:

    username = browser.find_element_by_xpath("//input[@id='navbar_username']")
    username.clear()
    username.send_keys("####")
    password = browser.find_element_by_xpath("//input[@id='navbar_password_hint']")
    password.clear()
    password.send_keys("####")
    loginbutton = browser.find_element_by_xpath("//input[@class='loginbutton']")
    loginbutton.click()
但当爬虫程序运行时,我无法登录。它把我带到了错误的用户名/密码页面。我尝试使用相同的信息手动登录,并且能够在没有任何错误的情况下登录。运行爬虫程序时,用户名和密码字段中会填写正确的值。我不明白是什么导致了这个问题。
非常感谢您的帮助。

似乎您使用了错误的元素作为密码字段。你应该试试

password = browser.find_element_by_xpath("//input[@id='navbar_password']")
因为此元素是
type=“password”
,而
type=“text”

由于目标元素处于隐藏状态,您可以使用以下命令使其可见:

browser.execute_script('document.getElementById("navbar_password").style.display="block";')

我也试过了,但由于tat字段是隐藏的,所以我无法
发送\u keys()
该字段。我检查了表单,在提交时它对用户名和navbar_密码字段条目进行了哈希处理。您知道如何在python selenium中填充隐藏的输入文本字段吗?您更新的应答脚本使该字段可见,我可以将密码值发送到相应的字段。但它仍然给我在登录时的错误,我也尝试了“form.submit()”样式的方法,但没有成功。@tortuga:你已经选择了这个作为你接受的答案,但是你的评论听起来好像这并没有真正解决你的问题。您仍然有问题吗?当面临此类问题时,最简单的方法是交互使用
Selenium
,然后将代码导出为Python。当查看结果(工作)代码时,您可能会发现原始代码失败的原因。