selenium 操作多个窗口间切换

#coding=gbk
'''
selenium多个窗口间切换
'''

from selenium import webdriver as wd
from selenium.webdriver import ActionChains as AC
from selenium.webdriver.common.keys import Keys
import time
import selenium.webdriver.support.ui as ui

bc=wd.Chrome(executable_path='f:\\chromedriver')
bc.get('http://www.baidu.com')
time.sleep(1)

bc.find_element_by_id('kw').send_keys('w3school')
AC(bc).send_keys(Keys.ENTER).perform()

#记录当前窗口对象
now_handle=bc.current_window_handle
time.sleep(3)

#点击搜索结果的 w3chool 在线教程链接
#bc.find_element_by_partial_link_text('w3school').click()

#动态获取网页加载完成
wait = ui.WebDriverWait(bc,10)
wait.until(lambda bc:bc.find_element_by_xpath('//*[@id="1"]/h3/a'))
bc.find_element_by_xpath('//*[@id="1"]/h3/a').click()
time.sleep(5)

#2个窗口间切换操作
for i in bc.window_handles:
    bc.switch_to.window(i)
    print(bc.title)

    #如果是新窗口,则操作
    if bc.title!='w3school_百度搜索':
        try:
            wait.until(lambda bc:bc.find_element_by_link_text('HTML5'))
            bc.find_element_by_partial_link_text('HTML5').click()
        except:
            print('HTML5操作失败!!')
        time.sleep(3)
    

bc.switch_to.window(now_handle)
bc.find_element_by_id('kw').clear()
bc.find_element_by_id('kw').send_keys('我是谁')
AC(bc).send_keys(Keys.ENTER).perform()

 

posted @ 2019-04-03 14:42  小金儿  阅读(201)  评论(0编辑  收藏  举报