selenium切换到新窗口的方法
做自动化跳转功能时发现怎么都获取不到页面中的一个点击元素,明明已经正常在浏览器里显示出来了。仔细观察才发现:弹出了一个新窗口,难怪找不到新窗口的元素。
这篇文章的解决方法非常有用,感谢作者:
代码实现如下:
all_handles = self.webBrowser.window_handles # 保存旧的窗口句柄
try:
element = WebDriverWait(self.webBrowser, 10).until(
EC.presence_of_element_located((By.XPATH, "//*[@id='app']/section/div[2]/div[1]/div[2]/a[1]"))
)
element.click() #加载完成后点击
finally:
time.sleep(2)
# 拿到所有的窗口
all_handles2 = self.webBrowser.window_handles # 所有窗口,包含打开的窗口
self.webBrowser.implicitly_wait(2)
# 拿到新窗口句柄
newhandle = [handle for handle in all_handles2 if handle not in all_handles]
self.webBrowser.switch_to.window(newhandle[0]) #切换到新窗口
time.sleep(2)
try:
element1 = WebDriverWait(self.webBrowser, 20).until(
EC.presence_of_element_located((By.ID, 'school-manage'))
)
element1.click() #加载完成后点击
finally:
time.sleep(2)