web自动化之浏览器窗口

在我们与浏览器交互当中,难免会遇到打开浏览器新窗口的存在,那么我们如何来进行新窗口的切换呢?
方法有两种
方式一:
 打开新窗口,获取所有窗口
 handles = driver.window_handles
 切换新窗口
 driver.switch_to.window(handles[-1]) #这里的-1只是它新窗口的下标标识
具体代码如下:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("qq")
driver.find_element_by_id("su").click()
#等待
locator = (By.XPATH,'//a[text()=" - 每一天,乐在沟通"]')
WebDriverWait(driver,30).until(EC.visibility_of_element_located(locator))
driver.find_element_by_xpath('//a[text()=" - 每一天,乐在沟通"]').click()

#窗口
handles = driver.window_handles
driver.switch_to.window(handles[-1])

#在QQ官网点击登录
locator_1 = (By.XPATH,'//ul[@style="padding-top: 15px;"]//a[@id="login"]')
WebDriverWait(driver,30).until(EC.visibility_of_element_located(locator_1))
driver.find_element(*locator_1).click()

第一种有点太笨重了,要是网络不好的时候,就会出现报错
方式二:
 1.#获取窗口数
 2.执行打开新窗口
 3.确认新窗口出现,再去操作
 4.再次获取窗口
 5.切换新窗口
具体代码如下:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
#输入QQ,点击搜索
driver.find_element_by_id("kw").send_keys("qq")
driver.find_element_by_id("su").click()

#等待
locator = (By.XPATH,'//a[text()=" - 每一天,乐在沟通"]')
WebDriverWait(driver,30).until(EC.visibility_of_element_located(locator))

#1.获取窗口数
handles = driver.window_handles
#2.执行打开新窗口的操作
driver.find_element(*locator).click()
#3.确认新的窗口出现了,我再去操作它
WebDriverWait(driver,10).until(EC.new_window_is_opened(handles))
#4: 再次获取 窗口的handles
handles = driver.window_handles
#5: 切换 到新窗口
driver.switch_to.window(handles[-1])

#在QQ官网点击登录
locator_1 = (By.XPATH,'//ul[@style="padding-top: 15px;"]//a[@id="login"]')
WebDriverWait(driver,30).until(EC.visibility_of_element_located(locator_1))
driver.find_element(*locator_1).click()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值