Python selenium3 弹窗处理&新窗口切换

1.系统自带弹窗

操作步骤:
    1.操作触发弹窗操作的元素
    2.捕获弹窗
        alert = driver.switch_to.alert
    3.操作弹窗
        获取弹窗的文本:alert.text
        点击弹窗的确定按钮:alert.accept()
        点击取消按钮:alert.dismiss()
        发送文字:alert.send_keys()

实操:

# 5.元素操作
# 滚动条至底
js = "arguments[0].scrollIntoView();"
search_alert = driver.find_element_by_css_selector("#alerta")
driver.execute_script(js, search_alert)
sleep(2)
# 5.2 点击弹窗元素
search_alert.click()
sleep(2)
# 5.3 获取弹窗户文本
alert = driver.switch_to.alert
print(alert.text)
# 5.4 点击确定
alert.accept()
sleep(2)

2.自定义弹出窗

语法:
    通过js方法来处理自定义弹窗,将自定义弹窗隐藏
    js ='document.getElementById("side-bar").style.display="none";'
    执行js是代码:driver.execute_script(js)

实操:

# 4.元素操作
# 4.1 定位元素 通过js代码
js1 ='document.getElementById("side-bar").style.display="none";'
js2 ='document.getElementById("iframe_company_mini_div").style.display="none";'
# 4.2 执行js代码
driver.execute_script(js1)
sleep(2)
driver.execute_script(js2)
sleep(2)

3.新窗口切换

语法:
    driver.switch_to.window(句柄/id)
    获取当前窗口句柄: handles = driver.window_handles 返回一个列表
    获取所用窗口句柄: handle =  driver.current_window_handle 返回一个字符串

实操:

# 1.导入selenium
from selenium import webdriver
from time import sleep
import os

# 2.打开谷歌浏览器
driver = webdriver.Chrome()
# 3.打开百度
url = "file:///" + os.path.abspath("../../练习页面/注册实例.html")
driver.get(url)
driver.maximize_window()
sleep(2)
# 4.元素操作
# 4.1 获取当前窗口句柄
handle = driver.current_window_handle
print(type(handle))   # <class 'str'>
print(handle)  # CDwindow-613F1C6DB8ABDE0F2AD6172AACEBFA01
# 操作当前窗口元素
user = driver.find_element_by_css_selector("#user")
user.clear()
user.send_keys("user123")
sleep(2)
# 4.2 触发新窗口元素
driver.find_element_by_partial_link_text("注册A网页").click()
sleep(2)
# 4.3 获取所有有句柄
handles = driver.window_handles
print(type(handles))  # <class 'list'>
print(handles)   # ['CDwindow-613F1C6DB8ABDE0F2AD6172AACEBFA01', 'CDwindow-8DF3946EEF01EE79BDA5013206285DCD']
# 4.4 进入新窗口
driver.switch_to.window(handles[len(handles)-1])
# 4.5 操作新窗口元素
userA = driver.find_element_by_css_selector("#userA")
userA.clear()
userA.send_keys("root")
sleep(2)
# 4.6 退出新窗口
driver.switch_to.window(handle)
sleep(2)
# 操作退出后窗口元素
tel = driver.find_element_by_css_selector("#tel")
tel.clear()
tel.send_keys("123456")  # 验证已经退出
sleep(2)
# 6.关闭浏览器
driver.quit()
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python Selenium 可以使用 switch_to.alert() 方法来处理弹窗。具体步骤如下: 1. 使用 driver.switch_to.alert() 方法切换弹窗。 2. 使用 text 属性获取弹窗中的文本信息。 3. 使用 accept() 方法接受弹窗,或使用 dismiss() 方法关闭弹窗。 例如,以下代码演示了如何处理一个简单的弹窗: ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.example.com") # 点击按钮,触发弹窗 button = driver.find_element_by_id("button") button.click() # 切换弹窗 alert = driver.switch_to.alert # 获取弹窗中的文本信息 text = alert.text print(text) # 接受弹窗 alert.accept() # 关闭浏览器 driver.quit() ``` ### 回答2: Python Selenium 是一个广泛使用的自动化测试工具,可以通过编写 Python 脚本来操作浏览器完成自动化测试。在测试过程中,浏览器会弹出各种弹窗,如 alert、confirm、prompt 等,这些弹窗会干扰自动化测试的正常执行。因此,处理弹窗Python Selenium 中一个重要的话题。 对于常见的弹窗类型,Python Selenium 提供了相应的方法进行处理,下面以 alert 弹窗为例进行讲解: 首先,我们需要使用 switch_to.alert() 方法切换到 alert 弹窗: ``` alert = driver.switch_to.alert ``` 接着,我们可以使用 text 属性获取弹窗中的文本信息: ``` text = alert.text ``` 如果要在弹窗中输入文本信息,可以使用 send_keys() 方法: ``` alert.send_keys("your text") ``` 如果弹窗是 alert 类型,可以使用 accept() 方法点击弹窗中的确定按钮: ``` alert.accept() ``` 如果弹窗是 confirm 类型,可以使用 dismiss() 方法点击弹窗中的取消按钮,或者使用 accept() 方法点击弹窗中的确定按钮: ``` alert.dismiss() alert.accept() ``` 如果弹窗是 prompt 类型,还需要先使用 send_keys() 方法输入要提交的值,然后再使用 accept() 方法提交: ``` alert.send_keys("your text") alert.accept() ``` 当然,以上方法只适用于单个弹窗的情况。如果有多个弹窗依次弹出,我们需要使用循环和 try...except...finally 语句来处理: ``` try: alert = driver.switch_to.alert alert.accept() except: # 异常处理 finally: # 记得返回原窗口 driver.switch_to.default_content() ``` 总之,通过以上方法,可以轻松地处理 Python Selenium 中的弹窗,确保自动化测试正常执行。 ### 回答3: 在使用 PythonSelenium 进行网页自动化测试的过程中,经常会遇到弹窗的情况,比如 JavaScript 弹出框、警告框等。这时,我们可以使用 Selenium 的 switch_to.alert 方法来处理弹窗。 1. 获取弹窗 可以使用 driver.switch_to.alert 来获取当前弹窗的实例。如下所示: ```python alert = driver.switch_to.alert ``` 2. 处理弹窗 通常来讲,弹窗分为警告框、确认框和提示框三种类型。下面我们介绍一下它们的处理方式。 2.1 警告框 警告框通常用于指示用户一些错误操作,我们只需要点击确认按钮即可关闭它。如下所示: ```python alert = driver.switch_to.alert alert.accept() ``` 2.2 确认框 确认框通常会让用户做出选择,例如确定或取消某些操作。我们可以使用 confirm() 方法来确认或取消操作。如下所示: ```python alert = driver.switch_to.alert alert.accept() # 确认 alert.dismiss() # 取消 ``` 2.3 提示框 提示框常用于接收用户输入的信息,我们可以使用 send_keys() 方法向其输入信息,然后点击确认按钮。如下所示: ```python alert = driver.switch_to.alert alert.send_keys("Hello, World!") # 向输入框输入信息 alert.accept() # 点击确认按钮 ``` 需要注意的是,有些情况下输入框可能被禁用,此时我们就无法向其输入信息了。 3. 关闭弹窗处理弹窗后,我们需要将焦点重新切换回主窗口。如下所示: ```python driver.switch_to.default_content() ``` 如果我们没有处理弹窗并且需要关闭弹窗,也可以使用下面的代码: ```python driver.switch_to.alert.dismiss() ``` 通过上述介绍,相信大家已经掌握了使用 PythonSelenium 处理弹窗的方法。需要注意的是,由于不同的弹窗类型处理方式不同,因此在实际应用中需要根据具体情况进行处理

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值