如何在Selenium中不使用driver.get点击元素,避免跳转回谷歌登录页
解决方案
谷歌身份验证页面存在会话上下文校验机制,直接调用driver.get会丢失前序登录流程生成的临时会话参数,所以会触发跳转回登录起点的问题。你提到的点击按钮、模拟Tab+回车操作完全不需要调用driver.get,直接在当前页面上下文执行即可,可行实现方案如下:
方案1:直接定位Continue按钮点击(优先使用)
- 先等待元素加载完成,避免未渲染报错,通过Selenium元素选择器定位后直接调用点击方法即可:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最长等待10秒直到Continue按钮可点击 continue_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Continue')]")) ) continue_btn.click()
- 若文本定位不准,可替换为按钮的
id、class、aria-label等其他属性匹配目标元素。
方案2:模拟键盘操作(定位按钮失败时使用)
- 你提到的Tab+回车操作可以直接通过Selenium的键盘事件实现,完全不需要调用
driver.get:
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains # 发送Tab+回车指令,单次Tab没定位到按钮可多次发送Tab指令后再回车 actions = ActionChains(driver) actions.send_keys(Keys.TAB).send_keys(Keys.ENTER).perform()
额外注意事项
- 进入验证页后不要执行刷新、
driver.get跳转、清除缓存类操作,会直接丢失当前登录上下文 - 若原生点击被反爬拦截,可使用JS注入方式点击,同样不需要刷新页面:
driver.execute_script("arguments[0].click();", continue_btn)
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

