python - 无法切换到 Facebook 登录警报,因为窗口名称每次都更改

标签 python facebook selenium

我一直在使用下面的代码使用 Facebook 凭据登录 Spotify。

这是我使用的代码:

__author__ = 'hoaxcracker'
import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

Time_list=[]
driver = webdriver.Firefox()
driver.get("https://play.spotify.com")
driver.find_element_by_id('fb-login-btn').send_keys(Keys.RETURN)


driver.find_element_by_id('email').send_keys("email@domain.com")
time.sleep(1)
driver.find_element_by_id('pass').send_keys("passwrd")
time.sleep(1)

我还尝试使用来自 Switch to web dialog box in selenium webdriver: Python 的以下代码但没有帮助。我发现 fb 登录的工作方式有点不同,因为它每次都会生成新的 token 。

所以之后的新代码是

__author__ = 'hoaxcracker'
from splinter import browser


import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

Time_list=[]
driver = webdriver.Firefox()
driver.get("https://play.spotify.com")
parent_h = browser.current_window_handle
driver.find_element_by_id('fb-login-btn').send_keys(Keys.RETURN) # click on the link that opens a new window
handles = browser.window_handles # before the pop-up window closes
handles.remove(parent_h)
browser.switch_to_window(handles.pop())
driver.find_element_by_id('email').send_keys("email@domain.com")
time.sleep(1)
driver.find_element_by_id('pass').send_keys("passwrd")
time.sleep(1)
# do stuff in the popup
# popup window closes
browser.switch_to_window(parent_h)

然后我得到这个错误!

Traceback (most recent call last): File "/Users/veer/PycharmProjects/DryRun/login.py", line 12, in parent_h = browser.current_window_handle AttributeError: 'module' object has no attribute 'current_window_handle'

Process finished with exit code 1

如有任何帮助,我们将不胜感激。

TIA

最佳答案

尝试以下代码行以正确切换到 Facebook 授权窗口:

driver.switch_to_window(driver.window_handles[1])

完整代码可能如下所示:

Time_list=[]
driver = webdriver.Firefox()
driver.get("https://play.spotify.com")
driver.find_element_by_id('fb-login-btn').send_keys(Keys.RETURN) # click on the link that opens a new window
driver.switch_to_window(driver.window_handles[1])
driver.find_element_by_id('email').send_keys("email@domain.com")
time.sleep(1)
driver.find_element_by_id('pass').send_keys("passwrd")
time.sleep(1)
# do stuff in the popup
driver.find_element_by_name('login').click()
time.sleep(1)
# No need to switch to main window (if authorization successful)

关于python - 无法切换到 Facebook 登录警报,因为窗口名称每次都更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165792/

相关文章:

facebook - 如何传递 Facebook 评论小部件的标题和图像?

javascript - 用facebook做ajax功能

java - 当通过 selenium 中的 browsermob 代理运行时,Har 文件总是返回空

python - 如何使用 selenium、python 上传文件(图片)

python - 创建网络查询表单

python - 如何在 Numpy 中实现 ReLU 函数

ios - Facebook iOS SDK : Post on my wall with mention friends

javascript - 点击隐藏元素 Selenium webdriver(javascript)

python - 识别python中的动词时态

python - 希望程序在程序结束时发送一封包含所有数据的电子邮件