千家信息网

selenium学习:多窗口切换

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,文件名:test12.pyfrom selenium import webdriverimport timedriver = webdriver.Chrome()file_path='http://w
千家信息网最后更新 2025年02月02日selenium学习:多窗口切换

文件名:test12.py

from selenium import webdriverimport timedriver = webdriver.Chrome()file_path='http://www.baidu.com'driver.get(file_path)#获取百度搜索窗口句柄search_windows=driver.current_window_handledriver.find_element_by_link_text('登录').click()driver.find_element_by_link_text('立即注册').click()#获取当前所有打开窗口的句柄all_handles=driver.window_handles#进入注册窗口for handle in all_handles:    if handle!=search_windows:        driver.switch_to.window(handle)        print('now register window!')        driver.find_element_by_name('userName').send_keys('username')        driver.close()        time.sleep(2)        #回到搜索窗口for handle in all_handles:    if handle == search_windows:        driver.switch_to.window(handle)        print('now search window')        #关闭登陆弹出框        driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_2__titleButtons"]').click()        driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")        driver.find_element_by_id('su').click()        time.sleep(2)driver.quit()

上述代码执行的过程是:首先打开百度首页,通过current_window_handle获取当前窗口的句柄,将当期句柄值赋给sreach_windows

通过driver.find_element_by_link_text('登录').click()打开弹出框,

通过driver.find_element_by_link_text('立即注册').click()进入到注册页面

通过driver.window_handles获取当前所有窗口句柄

第一个循环,若当前句柄不等于search_window,则一定不是百度首页,一定是注册窗口,则进行注册操作,注册操作完成后,通过driver.close关闭注册窗口

第二个循环,若为百度首页,则通过switch_to.window切换到百度首页,

通过 driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_2__titleButtons"]')关闭登陆弹出框。


0