切换窗口

方法一

使用场景:

打开多个窗口,需要定位到新打开的窗口

使用方法:

# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])

举例说明:

from selenium import webdriver
import time

#   打开课工场网站主页【第一个窗口】
driver = webdriver.Chrome()
driver.get('http://www.kgc.cn/')
driver.maximize_window()

#   点击全部课程,进入课程库【第二个窗口】
driver.find_element_by_link_text('[媒体] 15名学员入职阿里,课工场以实力成就高薪就业').click()
time.sleep(3)

#   使用第一种方法切换浏览器【切换到第二个窗口】
windows = driver.window_handles
driver.switch_to.window(windows[-1])
time.sleep(3)

#   点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
time.sleep(3)

#   关闭浏览器
driver.quit()
print('测试通过')

窗口归类

# 你打开的浏览器,谷歌
browser = webdriver.Chrome()
# 你中间的操作
...
# 获取当前浏览器所有的窗口
handles = browser.window_handles
# handles为一个数组:handles = [窗口1,窗口2,...]
# 窗口切换,切换为新打开的窗口
browser.switch_to_window(handles[-1])
# 切换回最初打开的窗口
browser.switch_to_window(handles[0])
# 新增一个窗口打开url
newwindow='window.open("https://www.baidu.com");'
browser.execute_script(newwindow)
# 关闭当前窗口
browser.close()
# 关闭所有窗口
browser.quit()

方法二

使用场景:

打开两个窗口,需要定位到新打开的窗口

使用方法:

# 获得打开的第一个窗口句柄
window_1 = driver.current_window_handle
# 获得打开的所有的窗口句柄
windows = driver.window_handles
# 切换到最新的窗口
for current_window in windows:
    if current_window != window_1:
        driver.switch_to.window(current_window)

举例说明:

from selenium import webdriver
import time

#   打开课工场网站主页【第一个窗口】
driver = webdriver.Chrome()
driver.get('http://www.kgc.cn/')
driver.maximize_window()

#   点击全部课程,进入课程库【第二个窗口】
driver.find_element_by_link_text('全部课程').click()
time.sleep(3)

#   使用第二种方法切换浏览器【切换到第二个窗口】
window_1 = driver.current_window_handle
windows = driver.window_handles
for current_window in windows:
    if current_window != window_1:
        driver.switch_to.window(current_window)
time.sleep(3)

#   点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
time.sleep(3)

#   关闭浏览器
driver.quit()
print('测试通过')

两种方法的区别

1、第一种方法比较简单,能提升整体代码的性能 2、第二种方法是大家最常用的方法,比较容易理解

参考

Update time: 2020-08-13

results matching ""

    No results matching ""