python win10 捕获 弹出窗口_Selenium-webdriver 系列Python教程(6)————如何捕获弹出窗口...

在web自动化测试中点击一个链接然后弹出新窗口是比较司空见惯的事情。

webdriver 中处理弹出窗口跟处理 frame 差不多,以下面的 html 代码为例

window.html

click me

下面的代码演示了如何去捕获弹出窗口

# coding:utf-8

__author__ = 'zhangzhe'

from selenium import webdriver

import time

import os

#打开Chrome

driver = webdriver.Chrome()

file_path = 'file:///' + os.path.abspath('windows.html')

driver.get(file_path)

time.sleep(3)

# 当前的window handle

ch = driver.current_window_handle

driver.find_element_by_link_text("click me").click()

time.sleep(3)

# 所有的window handles

wh = driver.window_handles

#在所有窗口中查找弹出窗口

for line in wh:

if line != ch:

driver.switch_to_window(line)

driver.find_element_by_id("kw").send_keys("selenium")

driver.switch_to_window(ch)

捕获或者说定位弹出窗口的关键在于获得弹出窗口的 handle。

在上面的代码里,current_window_handle, 然后使用了window_handles方法获取所有弹出的浏览器窗口的句柄,将这两个值的差值就是新弹出窗口的句柄。

在获取新弹出窗口的句柄后,使用 switch_to_window(line)方法,将新窗口的句柄以Name的方式作为参数传入既可捕获到新窗口了。

如果想回到以前的窗口定位元素,那么再调用1次switch_to_window方法, 传入之前窗口的句柄既可达到目的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Selenium进行页面操作时,可以使用seleniumwire库来捕获请求和响应的详细信息,包括cookie、载荷、响应体等。以下是如何获取这些信息的示例代码: ```python import time from seleniumwire import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def login_bp(url, username, password): # 创建一个浏览器实例,并启用Selenium Wire options = webdriver.EdgeOptions() options.add_experimental_option('detach', True) browser = webdriver.Edge(seleniumwire_options={'capture_all': True}) # 打开登录页面 browser.get(url) # 找到用户名输入框并输入密码 username_input = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'username'))) username_input.send_keys(username) # 找到密码输入框并输入密码 password_input = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.ID, 'password'))) password_input.send_keys(password) # 模拟回车键,提交表单 login_btn = browser.find_element(by=By.ID, value='denglub') login_btn.send_keys(Keys.ENTER) time.sleep(5) # 获取cookie信息 cookies = browser.get_cookies() print("Cookies:", cookies) # 获取所有请求和响应信息 for request in browser.requests: if request.response: print("URL:", request.url) print("Request headers:", request.headers) print("Request body:", request.body) print("Response headers:", request.response.headers) print("Response body:", request.response.body) # 关闭浏览器 browser.quit() return 0 if __name__ == '__main__': # 定义目标信息 atr_url = { 'url': 'http://pfs.ikhtech.com/FAPI/login.jsp', 'username': 'zhangwei', 'password': 'zhangwei' } login_bp(atr_url['url'], atr_url['username'], atr_url['password']) ``` 在上述代码中,我们使用`seleniumwire_options={'capture_all': True}`来启用Selenium Wire的请求和响应捕获功能。然后,在循环中遍历所有的请求,并打印URL、请求头、请求体、响应头和响应体信息。 请注意,你需要在运行代码之前安装`seleniumwire`库,可以使用以下命令进行安装: ``` pip install seleniumwire ``` 这样,你就可以获取登录页面返回的cookie、载荷、响应体,以及XHR的载荷、URL和响应体等信息了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值