python自动化11 浏览器多窗口处理

浏览器多窗口处理

有时候我们在测试一个web应用的时候会出现多个浏览器窗口的情况webdriver提供了相应的解决方案,如下:
首先要获得每一个窗口的唯一标识符号(柄),通过获得的柄来区分不同的窗口,从而对不同窗口上的元素进行操作。
import time

from selenium import webdriver
from config_utils import config_u
from log_utils import LogUtils
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.by import By

log_path = config_u.get_log_path
log_utils = LogUtils(log_path)

urls = 'https://baidu.com'
def find_element_xpath(self, xpath_path, key_word):
    self.driver.find_element(By.XPATH, xpath_path).send_keys(key_word)

driver_path=config_u.get_driver_path
path = Service(driver_path)
driver = webdriver.Firefox(service=path)
driver.get(urls)
handle = driver.current_window_handle #当前窗口句柄
print(handle)				#只显示主窗口的句柄
time.sleep(2)
#打开一个新窗口,在操作系统中,该窗口为一个独立的句柄(随机的字符串  数字和字母组成 每次打开一个新窗口  都会产生新句柄值)

driver.find_element(By.XPATH,'//a[contains(@href,"http://image.baidu.com/")]').click()
time.sleep(2)
handles = driver.window_handles #显示所有窗口的句柄
#算法:已知其中的两个值的一个值,求另一个值
#方法一:
handles.remove(handle)#利用列表移除一个值,剩下的就是要求的值
new_handle =handles[0]
#方法二:
# for hand in handles:
#     if hand != handle:
#         new_handle =hand
#         print(handle)

driver.switch_to.window(new_handle) #根据新的句柄值,跳转到新的窗口
time.sleep(3)
driver.find_element(By.XPATH,'//a[contains(@href,"se=1&showtab=0&fb=0&width=")]').click()

也可以通过标题名字去遍历所有的句柄


def switch_windw_by_title(title):
    for hand in driver.window_handles:
        driver.switch_to.window(hand)
        if driver.title.__contains__(title):
            print(hand)
            break

通过url遍历所有句柄

def switch_windw_by_url(url):
    for hand in driver.window_handles:
        driver.switch_to.window(hand)
        if driver.current_url.__contains__(url):
            print(hand)
            break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值