1 多标签
当我们从一个网站上点击一个链接之后,可能会弹出一个新的窗口,我们手动测试可以直接选中弹出的窗口进行操作,但是计算机不可以,计算机需要在多个标签之间进行切换,接下来我们就学习下如何实现
1.获取所有的标签句柄列表
driver.window_handles
2.切换到指定标签
driver.switch_to_window(driver.window_handles[1])
3.switch_to(更为推荐的方法)
driver.switch_to.window(driver.window_handles[n])
练习案例
from selenium import webdriver
import time
driver = webdriver.Firefox()
url = 'http://bj.58.com'
driver.get(url)
# 打印点击之前的窗口句柄列表
print('点击之前的窗口句柄:',driver.window_handles)
print('当前的url:',driver.current_url,'当前的标题:',driver.title)
# 定位到房屋出租,点击
el = driver.find_element_by_link_text('房屋出租')
el.click()
print('-------------------------------------------------------------')
# 获取到所有的窗口
handles = driver.window_handles
print('点击之后的窗口句柄:',handles)
print('当前的url:',driver.current_url,'当前的标题:',driver.title)
# 切换到新开窗口
driver.switch_to.window(handles[1])
print('切换之后的窗口句柄:',handles)
print('当前的url:',driver.current_url,'当前的标题:',driver.title)
try:
# 定位一个再新窗口页面上的元素,如果能够定位到,则表明当前在新窗口上,如果失败则表明现在不在新窗口上
el = driver.find_element_by_css_selector('.listUl > li:nth-child(1) > div:nth-child(2) > h2:nth-child(1) > a:nth-child(1)')
print (el.text)
print('driver在新页面')
except:
print('没有在新页面')
try:
# 定位一个在就窗口上的元素,如果能够定位到,则表明现在在就窗口上
el = driver.find_element_by_css_selector('div.col3:nth-child(2) > em:nth-child(1) > a:nth-child(1)')
print (el.text)
print('driver在旧页面')
except:
print('没有在旧页面')