python - 无法使用 selenium python 在网站上使用 google alert 登录
问题描述
我正在尝试创建一个脚本,在该脚本中我使用我的谷歌帐户登录到一个网站,但我遇到了一个我无法解决的重大问题。
import selenium
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("/Users/vagif/Downloads/chromedriver")
driver.get('https://passport.alibaba.com/icbu_login.htm?return_url=https%3A%2F%2Fwww.alibaba.com%2F')
driver.implicitly_wait(3)
google = driver.find_element_by_xpath('//a[@attr-type="google"]')
google.click()
time.sleep(1)
actions = ActionChains(driver)
actions.key_down(Keys.COMMAND + '~').perform()
time.sleep(1)
element = driver.find_element_by_xpath('//input[@type="email"]')
element.send_keys('leine.tee1@gmail.com')
time.sleep(1)
next = driver.find_element_by_class_name('RveJvd').click()
time.sleep(1)
password = driver.find_element_by_class_name('whsOnd').send_keys('***password***')
next = driver.find_element_by_class_name('RveJvd').click()
我的问题是代码工作正常,直到出现使用谷歌弹出窗口登录。之后,我收到一条错误消息,指出未找到该元素。任何帮助将不胜感激谢谢大家!
解决方案
感谢@demouser123 和这个链接我能够解决这个问题。
通过添加以下代码:
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]
driver.switch_to_window(window_after)
我成功地能够切换标签。这是我的完整代码:
import selenium
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("/Users/vagif/Downloads/chromedriver")
driver.get('https://passport.alibaba.com/icbu_login.htm?return_url=https%3A%2F%2Fwww.alibaba.com%2F')
driver.implicitly_wait(3)
google = driver.find_element_by_xpath('//a[@attr-type="google"]')
google.click()
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]
driver.switch_to_window(window_after)
time.sleep(1)
time.sleep(1)
element = driver.find_element_by_xpath('//input[@type="email"]')
element.send_keys('leine.tee1@gmail.com')
time.sleep(1)
next = driver.find_element_by_class_name('RveJvd').click()
time.sleep(2)
password = driver.find_element_by_class_name('whsOnd').send_keys('****password')
next = driver.find_element_by_class_name('RveJvd').click()
感谢大家的帮助!
推荐阅读
- microsoft-dynamics - 如何在页面中添加来自不同源表的字段(NAV 2016)?
- model-view-controller - 一对多 - FOREIGN KEY 约束可能导致循环或多个级联路径
- javascript - 查找内容是否具有 JavaScript 中的当前网站 url
- html - 如何在表格上显示绝对 div 组件并且表格有滚动
- python - 如何获取 models.CharField 是否被选中?
- ssis - Created Table 具有将默认值分配给 NOT NULL 列的函数。从 SSIS 中,未调用默认函数
- angular - Angular在身份验证时重新加载同一页面
- python - NameError:名称“bs4”未定义
- django - 如何过滤不同的条件?
- javascript - 如何在 Javascript 中不可变地更新地图