之前在学习的过程中了解到selenium中提供了页面前进,后退的方法,forward()方法和back()方法,今天学习到selenium中提供的switch_to.windows()方法可以实现页面间的切换,其中webdriver提供的current_window_handle可以获得当前页面的句柄,window_handles可以获得所有打开的页面的句柄。
以https://hao.360.cn/?src=bm页面为例,编写了一个窗口之间切换的应用实例
# coding="utf-8"
from selenium import webdriver
import time
try:
driver = webdriver.Firefox()
#设置隐式等待
driver.implicitly_wait(10)
driver.get("https://hao.360.cn/?src=bm")
#获得360窗口句柄
search_windows = driver.current_window_handle
driver.find_element_by_link_text("58 同 城").click()
#driver.find_element_by_link_text("微博").click()
#获得当前所有打开窗口的句柄
all_handles = driver.window_handles
print(all_handles)
#进入58同城窗口
for handle in all_handles:
if handle != search_windows:
driver.switch_to.window(handle)
print("now 58同城 window!")
time.sleep(5)
#回到搜索窗口
for handle in all_handles:
if handle == search_windows:
driver.switch_to.window(handle)
print("now 360 window")
time.sleep(5)
driver.find_element_by_id("search-kw").send_keys("selenium")
driver.find_element_by_id("search-btn").click()
time.sleep(5)
except BaseException as msg:
print(msg)
finally:
driver.quit()