【发布时间】:2024-05-03 14:55:04
【问题描述】:
我在 Windows 7 中使用带有 Python (https://pypi.python.org/pypi/selenium) 的 selenium 包。
当我尝试登录我的 Facebook 帐户时,我使用 send_keys 命令,例如
elem = browser.find_element_by_name("email")
elem.send_keys(email);
elem = browser.find_element_by_name("pass")
elem.send_keys(password);
登录失败显然是因为第二个send_keys 丢失了密码的第一个字符(我通过直接将密码字符发送到电子邮件字段来发现这一点。
发生了什么事?为什么 selenium 不能做一些简单的事情,比如将键发送到输入字段? 这是 Facebook 为拒绝自动脚本编写的某种保护措施吗?
尝试发送整个字母表并得到了这个:
abcdefghijklmnopqrstuvwxyzBCDFGIKLNOQSTWX
注意缺少多少字符...
更新
显然问题与 facebook 无关,而与 chrome 驱动程序有关。
如果我发送以下简单代码
browser = webdriver.Chrome()
browser.get("https://www.google.com") # Load page
elem = browser.find_element_by_name("q") # Find the query box
query= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
elem.send_keys(query)
使用 chrome 驱动程序,我得到
BCDFGIKLNOQSTWX
注意 A、E、H ... Y、Z 是如何丢失的
使用 Firefox 驱动程序(将 browser = webdriver.Chrome() 替换为 browser = webdriver.Firefox() 我得到:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
【问题讨论】:
-
就个人而言,我从未在任何网站(包括 Facebook)上遇到过此问题。您是否尝试过在密码字段中输入文本之前对
implicit-wait进行排序? -
嗯,我在 PhantomJS 驱动程序中也观察到了这一点。
-
见*.com/questions/18483419/… 有迹象表明使用非英语键盘布局或使用远程显示器可能是罪魁祸首。
标签: python google-chrome selenium key send