弹出框操作

【1】弹出框有两种
  1. 页面弹出框;
  2. JavaScript(Windows浏览器) 弹出框,包括Alert(警告)、confirm(确认)、prompt(提问);
【2】页面弹出框

是一个html 页面的元素。只不过,是由用户在页面的操作触发弹出。
所以处理这一类型的弹出框,一般是:

  1. 执行触发操作之后,等待弹出框出现之后;
  2. 再定位弹出框中的元素并操作。
示例:百度登录的弹出框

在百度首页:需要用户点击登录按钮,登录弹出框才会出现。才可以进行登录操作。
代码:

from selenium import webdriver
#显性等待 --引入库
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_xpath('//*[@id="ul"]//*[@name="tj_login"]').click()

#1/等待弹出框中,要操作的元素可见
ele_id = 'TANGRAM_PSP_10_footerUloginBtn'
param = (By.ID,ele_id)
WebDriverWait(driver,10).until(EC.visibility_of_element_located(param))

#2、再去操作元素
driver.find_element_by_id(ele_id).click()
【3】JavaScript(Windows浏览器) 弹出框

在WebDriver 中处理JavaScript 所生成的alert、confirm 以及prompt 十分简单,具体做法是使用 switch_to_alert()方法定位到 alert/confirm/prompt ,然后使用 text/accept/dismiss/send_keys等方法进行操作
text:返回 alert/confirm/prompt 中的文字信息
accept():接受现有警告框
dismiss():解散现有警告框
send_keys(keysToSend):往弹出框里输入文本

实例一:处理Alert 弹出框的自动化代码
from selenium import webdriver
#显性等待 --引入库
from  selenium.webdriver.support.wait import WebDriverWait
from  selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("D:\\test-3.html")
#点击页面的元素,触发alert 弹出框
driver.find_element_by_id("press").click()
import time

#1、等待弹窗
WebDriverWait(driver,20,1).until(EC.alert_is_present())
#2、从html 页面切换到 alert  ----实例化一个Alert 类
alert = driver.switch_to.alert
#3、获取alert 的文本内容
text = alert.text
#4、接受
alert.accept()
#退出浏览器
driver.quit()
实例二:百度搜索页面

百度搜索页面设置弹出的窗口是不能通过前端工具对其进行进行定位的,这个时候就可以通过switch_to_alert()方法接受这个弹窗
在这里插入图片描述

from  selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

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

#鼠标悬停至“设置”链接
link = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(link).perform()

#打开搜索设置
driver.find_element_by_link_text("搜索设置").click()

#保存设置
driver.find_element_by_class_name("prefpanelgo").click()
time.sleep(2)

#接受弹出框
driver.switch_to_alert().accept()

driver.quit()

这个例子中,ActionChains 类所提供的 move_to_element()鼠标悬停的使用,将鼠标悬停在“设置”链接上,然后在弹出的下拉菜单中单击“搜索设置”按钮,设置完成后单击”保存设置“,弹出保存确认警告框。通过switch_to_alert()方法获取当前页面上的警告框,并使用accept()方法接受警告框。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium 可以模拟处理框,一般有以下几种情况: 1. Alert 框:可以使用 `switch_to.alert` 方法切换到框,然后使用 `accept()` 或 `dismiss()` 方法确认或取消框。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击 Alert 按钮 alert_btn = driver.find_element_by_id("alert_button") alert_btn.click() # 切换到 Alert 框 alert = driver.switch_to.alert # 确认 Alert 框 alert.accept() # 关闭浏览器 driver.quit() ``` 2. Confirm 框:与 Alert 框类似,可以使用 `switch_to.alert` 方法切换到框,然后使用 `accept()` 或 `dismiss()` 方法确认或取消框。不同的是,Confirm 框会询问用户是否确定操作。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击 Confirm 按钮 confirm_btn = driver.find_element_by_id("confirm_button") confirm_btn.click() # 切换到 Confirm 框 confirm = driver.switch_to.alert # 确认 Confirm 框 confirm.accept() # 关闭浏览器 driver.quit() ``` 3. Prompt 框:与 Confirm 框类似,可以使用 `switch_to.alert` 方法切换到框,然后使用 `send_keys()` 方法输入数据,使用 `accept()` 或 `dismiss()` 方法确认或取消框。不同的是,Prompt 框会让用户输入一些数据。 示例代码: ```python from selenium import webdriver driver = webdriver.Chrome() # 打开网页 driver.get("https://www.baidu.com") # 点击 Prompt 按钮 prompt_btn = driver.find_element_by_id("prompt_button") prompt_btn.click() # 切换到 Prompt 框 prompt = driver.switch_to.alert # 输入数据 prompt.send_keys("Hello, World!") # 确认 Prompt 框 prompt.accept() # 关闭浏览器 driver.quit() ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值