在web自动化测试过程中,有时候点击某个链接时会弹出一个新的窗口,此时我们直接定位的话就会报错,我们应该先切换到要定位的窗口,再去定位要定位的元素。
以上是两个窗口,假如我要定位右边的窗口的元素,那我先切换到第二个窗口才能定位。
以下我要实现在https://www.so.com/页面,点击‘360导航’,然后切换到新的窗口,搜索‘shawn’。代码如下:
dr = webdriver.Chrome()
dr.get('https://www.so.com/')
dr.implicitly_wait(10)
dr.find_element_by_link_text('360导航').click()
#获取当前的窗口句柄
window1 = dr.current_window_handle
#获取所有打开的窗口句柄
all_windows = dr.window_handles
#使用for循环遍历窗口,再用if判断语句,找到要定位的窗口
for handle in all_windows:
if handle != window1:
dr.switch_to.window(handle)
dr.find_element_by_id('search-kw').send_keys('shawn')
dr.find_element_by_id('search-kw').submit()