如果Firefox有焦点,Selenium只能登录到web表单

2024-10-02 04:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Selenium Webdriver/python浏览一个具有复杂登录屏幕的站点。在

登录的内部结构如下:

  1. Javascript将用户名和随机数一起发送到服务器
  2. 服务器发回一个salt值,该值与密码组合并进行哈希处理(在客户端)。在
  3. 散列后的密码被发送到服务器并继续登录。在

Selenium可以使用以下代码成功登录,但前提是Firefox具有焦点。在

driver.find_element_by_id("ctl00_ContentPlaceHolder1_UserNameT").clear()
driver.find_element_by_id("ctl00_ContentPlaceHolder1_UserNameT").send_keys("username")
driver.find_element_by_id("ctl00_ContentPlaceHolder1_PasswdT").clear()
driver.find_element_by_id("ctl00_ContentPlaceHolder1_PasswdT").send_keys("pa$$word")
time.sleep(2.5)
driver.find_element_by_id("ctl00_ContentPlaceHolder1_btnLogin").click()

当Firefox有焦点时,click()命令会导致密码散列-我看到屏幕上的字符数发生了变化。如果Firefox没有聚焦(例如,如果我在python窗口中单步执行代码),则不会发生这种情况。在

Selenium不应该模拟浏览器焦点吗?我能用硒来解决这个问题吗?如果没有,当我进入这段代码时,Python能把我的注意力转移到Firefox上吗?不幸的是,我需要经常浏览这个登录屏幕。操作系统是OSX 10.9.2。在


Tags: 代码服务器id密码by屏幕driverselenium
2条回答

也许driver.switch_to_window命令与页面元素上的click()结合以获得焦点会起作用吗?在

阅读更多信息:http://selenium-python.readthedocs.org/en/latest/navigating.html#moving-between-windows-and-frames

Firefox在处理非活动窗口上的事件时遇到问题。你可以尝试启用标志focusmanager.testmode在firefox个人资料上。有关详细信息,请查看my answer here。在

相关问题 更多 >

    热门问题