三大切换:窗口切换、iframe切换、alert切换
为什么要讲这三个切换呢?第四讲我们讲过,“Message: no such element: Unable to locate element”遇到这样的报错,很可能是页面加载过慢导致的,但是,导致这个报错的还可能是其他原因,比如:在跑web自动化测试时,还会有其他原因:
第一种:遇到新开了一个窗口需要定位新窗口中的元素,定位失败
第二种:web页面中嵌套ifram e中元素,定位失败
第三种:alert弹框切换(原始的弹框,比较少用了),弹框出现后,如果不点击‘确定’按钮,页面的元素加载不出来,定位失败
一、窗口切换:driver.switch_to.window(driver.driver.window_handles[-1])
from selenium import webdriver
# 打开浏览器
driver = webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()
# 打开一个网页
driver.get("http://www.baidu.com")
# 通过xpath找到需要操作的元素(天气按钮):元素定位
weather_button = driver.find_element('xpath', '//span[@class="show-icon-temp c-font-normal c-color-t"]')
# 点击天气按钮
weather_button.click()
# 获取当前所有窗口的窗口句柄,相当于窗口的id(每个窗口id是唯一的,并且每次打开会生成一个新的id)
print(driver.window_handles) # 得到的是一个列表
# 切换窗口,最新打开的窗口的句柄会在列表的最后一个元素
driver.switch_to.window(driver.driver.window_handles[-1]