当我们点击一个页面,跳转到另一个新页面时,再定位就需要切换到新页面的句柄去定位,看一下具体代码
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
#获得百度搜索窗口句柄(当前的)
sreach_window = driver.current_window_handle
driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()
#获得当前所有打开窗口的句柄
allwindows = driver.window_handles
#进入注册窗口
for handle in allwindows:
if handle != sreach_window: #不是搜索句柄就是注册句柄了
driver.switch_to.window(handle)
print("现在是注册窗口")
title = driver.title
print(title)
print(driver.current_url)
for handle in allwindows:
if handle == sreach_window:
driver.switch_to.window(handle)
print("现在是搜索窗口")
#关闭打开的登录小窗口
driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_4__closeBtn']").click()
print(driver.title)
print(driver.current_url)
driver.find_element_by_id("kw").send_keys("lalala")
driver.find_element_by_id("su").click()
time.sleep(2)
driver.quit()
首先我们要获取之前页面的句柄,再获取所有句柄,用遍历去查找,如果当前句柄不等于之前的句柄,则说明是新的句柄,则切换到这个页面,如果页面很多的话,就要获取多次