Selenium基础 — 浏览器弹窗操作
创始人
2024-04-02 03:46:22
0

1、浏览器自带弹窗操作

说明:
webdriver中处理JavaScript所生成的alertconfirm以及prompt弹窗是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt弹窗。然后使用text/accept/dismiss/send_keys方法按需进行操做。
常用操作:

操作说明
text返回alert/confirm/prompt 中的文字信息。
accept()点击弹窗中的确认按钮。(接收警告)
dismiss()点击弹窗中的取消按钮,如果有的话。(弹窗中的)
send_keys()输入文本到警告框,alert\confirm 没有对话框就不能用了,不然会报错。

示例:
页面代码片段:










脚本代码:

"""
1.学习目标:掌握浏览器自带弹窗的处理方法
2.语法(操作步骤):2.1 操作触发弹窗的元素2.2 获取弹窗(进入弹窗)alert = driver.switch_to.alert2.3 操作弹窗alert.text   获取弹窗文本alert.accept() 点击弹窗确定按钮alert.dismiss() 点击弹窗取消按钮alert.send_keys("输入内容") 在弹窗中输入文字
3.需求在页面中,操作浏览器自带弹窗
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os# 2.打开浏览器
driver = webdriver.Firefox()# 3.打开页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)# 4.处理浏览器自带弹窗
# 4.1 触发弹窗的元素button_alert,完成text和accept()方法
# 4.1.1 定位alert按钮,触发弹窗
el = driver.find_element_by_id("alert")
el.click()
sleep(2)# 4.1.2 获取弹窗(进入弹窗)
alert = driver.switch_to.alert# 4.1.3 获取弹窗文本值
print("弹窗文本值:", alert.text)# 4.1.4 点击弹窗确定按钮
alert.accept()
sleep(2)# 4.2 触发弹窗的元素button_confirm,完成dismiss()方法
# 4.2.1 定位confirm按钮,触发弹窗
el = driver.find_element_by_id("confirm")
el.click()
sleep(2)# 4.2.2 获取弹窗(进入弹窗)
confirm = driver.switch_to.alert# 4.2.3 获取弹窗文本值
print("弹窗文本值:", confirm.text)# 4.2.4 点击弹窗取消按钮
confirm.dismiss()
sleep(2)# 4.3 触发弹窗的元素button_prompt,完成send_keys("输入内容")方法
# 4.3.1 定位prompt按钮,触发弹窗
el = driver.find_element_by_id("prompt")
el.click()
sleep(2)# 4.3.2 获取弹窗(进入弹窗)
prompt = driver.switch_to.alert# 4.3.3 获取弹窗文本值
print("弹窗文本值:", prompt.text)# 4.3.4 点击弹窗确定按钮
prompt.send_keys("怎么显示不了")
sleep(2)# 4.3.5 点击弹窗确定按钮
prompt.accept()
sleep(2)# 5.关闭浏览器
driver.quit()

注意:prompt弹窗输入框,Chrome不显示输入文本
Python版本 3.7.7

  • Edge版本:18.18362,没有问题。
  • Firefox版本:76.0.1 (64 位),没有问题。
  • Chrome版本:74.0.3729.131(正式版本)32位,有问题。

2、页面自定义弹窗操作

由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS方法来进行处理。
需求:
需求:去掉淘宝首页的自定义弹窗
淘宝首页的自定义弹窗如下:

提示:网页中弹出的对话框,也属于页面自定义弹窗,都可以用下面方式处理。
实现方式:
大家能看到,上图中的这种弹窗就是自定义弹窗的表现形式,处理这种弹窗可以利用HTMLDOMStyle对象中的一个display属性来处理,可以设置元素如何被显示。
将display的值设置成none:此元素不会被显示,就可以去除这个弹窗了。
注意:手动页面刷新之后还会出现弹窗。

步骤如下:

# JavaScript语法
js = 'document.getElementById("div_company_mini").style.display="none";'# 使用Python执行JS语句
driver.execute_script(js1)

提示:
document.getElementById()是JS获取元素的方式,在JS获取元素方式中,就只有ById()获取的是一个元素。
其他获取元素的方式,都获取的是结果集,需要获取具体元素的时候,注意要使用索引。
简单举例:

  1. 通过ID获取(getElementById)
  2. 通过name属性(getElementsByName)
  3. 通过标签名(getElementsByTagName)
  4. 通过类名(getElementsByClassName)


示例:

"""
1.学习目标:了解关闭web页面自定义弹窗
2.语法(操作步骤)2.1 找到自定义弹窗的元素,修改样式:tyle.display='none'display='none'表示不显示样式,目的是将弹窗隐藏2.2 操作步骤js = document.getElementById("id属性值").style.display="none"或者其他的JS获取元素方式driver.execute_script(js)
3.需求隐藏页面自定义弹窗
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep# 2.打开浏览器
driver = webdriver.Chrome()# 3.打开页面
url = "https://www.taobao.com/"
driver.get(url)
sleep(5)# 4.关闭自定义弹窗
js = 'document.querySelector("body > div.tbh-fixedtool.J_Module > div").style.display="none"'
driver.execute_script(js)
sleep(2)# 5.关闭浏览器
driver.quit()

最后我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

1、学习思路和方法

这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

2、想学习却无从下手,该如何学习?

这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...