selenium————多窗口切换

来源:互联网 发布:正规淘宝代刷平台app 编辑:程序博客网 时间:2024/05/29 17:38
#####################################   多窗口切换 ,switch_to.window()                   #####################################from selenium import webdriverfrom selenium.webdriver.firefox.firefox_binary import FirefoxBinaryfrom time import sleep#调用火狐浏览器binary = FirefoxBinary('D:\\安装软件\\火狐浏览器\\firefox.exe')driver = webdriver.Firefox(firefox_binary=binary)#隐式等待driver.implicitly_wait(10)driver.get("http://www.baidu.com")#获得百度搜索句柄baidu= driver.current_window_handleprint(baidu)#点击登录按钮driver.find_element_by_xpath("html/body/div[2]/div/div/div[3]/a[7]").click()driver.find_element_by_link_text("立即注册").click()sleep(2)#获得当前所有打开的窗口all_handles = driver.window_handles#进入注册界面:for handle in all_handles:    if handle != baidu:                driver.switch_to.window(handle)        zcjm = driver.current_window_handle        print(zcjm)        print("now sreach window")        driver.find_element_by_link_text("《百度用户协议》").click()        sleep(3)#获得当前所有打开的窗口all_handles = driver.window_handles#进入百度用户协议界面for handle in all_handles:    if handle != baidu and handle !=zcjm:        driver.switch_to.window(handle)        print("即将进入百度协议")        driver.find_element_by_link_text("《百度钱包用户协议》").click()        print("进入百度协议")        sleep(2)        #关闭当前浏览器,用户协议界面        driver.close()        sleep(3)#进入到百度界面driver.switch_to.window(baidu)driver.find_element_by_id("kw").send_keys("哈哈哈")sleep(3)#关闭当前浏览器,百度搜索界面driver.close()sleep(3)#关闭整个浏览器driver.quit()        


当有多个窗口打开并需要来回切换的时候,注意点:

1.用driver.current_window_handle获取当前窗口的句柄并且赋予变量XXX

2.当进入另外一界面的时候,加一个判断:如果不等于

3.只有进入到该页面才能对该页面进行操作

4.如果driver.close() ,关闭的是当前的页面

5.driver.close(XXXX)可以实现,跨窗口关闭

6.driver.quit() 关闭整个浏览器

7.使用driver.switch_to.window(XXX),进入到该句柄的界面