主要是为了测试browser.switch_to.window(browser.window_handles[x])
,x为0.1.2.3.4…。可以直接对打开的网页进行页面的切换,不用再用循环获取所有打开网页的句柄,然后再判断。
from selenium import webdriver
import time
browser = webdriver.Chrome()
# 设置隐式等待 find等待查询,每半秒执行查询一次最长8秒
browser.implicitly_wait(8)
browser.get("http://www.hao123.com/")
browser.maximize_window()
# 共建立五个网页
# 第一个是开始的 hao123.com
# 第二个 点击 百度
browser.find_element_by_css_selector('[href="http://www.baidu.com/?tn=sitehao123_15"]').click()
# 第三个 点击 新浪
browser.find_element_by_css_selector('[href="http://www.sina.com.cn/"]').click()
# 第四个 点击 搜狐
browser.find_element_by_css_selector('[href="http://www.sohu.com/"]').click()
# 第五个 点击 腾讯
browser.find_element_by_css_selector('[data-id="4"] [href="http://www.qq.com/"]').click()
# 没有切换前在 hao123.com 页面 第1个打开的页面对应的window_handles[0]
browser.find_element_by_css_selector('[data-hook="inputBox"] [data-hook="searchInput"]').clear()
browser.find_element_by_css_selector('[data-hook="inputBox"] [data-hook="searchInput"]').send_keys("我是Dopamine,hao123")
# 留时间取查看是否输入
time.sleep(15)
# 切换第2个打开的页面百度,对应的window_handles[4]
browser.switch_to.window(browser.window_handles[4])
# 留下痕迹
browser.find_element_by_css_selector('#kw').clear()
browser.find_element_by_css_selector('#kw').send_keys("我是Dopamine,百度")
time.sleep(5)
# 切换第3个打开的新浪网站,对应的window_handles[3]
browser.switch_to.window(browser.window_handles[3])
# 留下痕迹
browser.find_element_by_css_selector('[name="SerchKey"]').clear()
time.sleep(2)
browser.find_element_by_css_selector('[name="SerchKey"]').send_keys("我是Dopamine,新浪")
time.sleep(5)
# 切换第4个打开的 搜狐,对应的window_handles[2]
browser.switch_to.window(browser.window_handles[2])
# 留下痕迹
browser.find_element_by_css_selector(".top-box .search-input,left").clear()
time.sleep(2)
browser.find_element_by_css_selector(".top-box .search-input,left").send_keys("我是Dopamine,搜狐")
time.sleep(5)
# 切换第5个打开的 腾讯,对应的window_handles[1]
browser.switch_to.window(browser.window_handles[1])
# 留下痕迹
browser.find_element_by_css_selector("#sougouTxt").clear()
browser.find_element_by_css_selector("#sougouTxt").send_keys("我是Dopamine,腾讯")
time.sleep(5)
# 重新 切换到第1个打开的 hao123.com,对应的window_handles[0]
browser.switch_to.window(browser.window_handles[0])
browser.find_element_by_css_selector('[data-hook="inputBox"] [data-hook="searchInput"]').clear()
browser.find_element_by_css_selector('[data-hook="inputBox"] [data-hook="searchInput"]').send_keys("我是Dopamine,我转了一圈又回来了")
time.sleep(5)
browser.quit()
示例说明:新浪网站响应不是很快,也可能是我自己网络为题,所以多加了几个延时,仅仅是为了测试
网上大部分都是相互复制,没有实例,我就顺便验证了下,
打开网页的顺序是1.2.3.4.5…N
所在网页的句柄是0.N-1.N-2.N-3…
例如:
依次打开了 网页1,网页2,网页3,网页4,网页5
那么对应的句柄为:
网页1---------->browser.window_handles[0]
网页2---------->browser.window_handles[4]
网页3---------->browser.window_handles[3]
网页4---------->browser.window_handles[2]
网页5---------->browser.window_handles[1]
通过`browser.switch_to.window(browser.window_handles[X])`即可实现页面的轻松切换
By Dopamine