upload上传组件点击上传按钮,弹出文件框前出现提示框

这篇博客讲述了如何在用户上传文件前增加一个确认步骤,询问所选文件是否为证书。通过在Upload组件上方添加一个Button作为遮罩,并设置点击事件触发确认对话框。当用户点击"是"时,会将fileTag设为true并开始上传;点击"否"则fileTag设为false。使用$refs调用upload组件的点击事件来启动文件选择。博客内容包括具体的HTML和JavaScript代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

选择文件前,需要询问用户此次选择的文件是否为证书,若是,就会新加一个字段。
在这里插入图片描述

方法

用一个Button放在upload组件上方,形成一个遮罩,点击事件中加上提示框的内容,点击是或否后执行各自的事件,通过 ref 来执行upload的点击事件。

<div style="position: relative;">
	<Upload
		multiple
		type="drag"
		action=""
		:disabled="isUpload"
		:before-upload="customUpload"
		v-if="!hwInfo.overTime"
	>
		// 因为是下面的 div 点击打开文件框,所以 ref 应该放在此处,放在上面没有用
		<div style="padding: 20px 0" ref="upload1">
			<Icon type="ios-cloud-upload" size="52" style="#b4b4b4"></Icon>
			<p>
				<span>上传资料</span>
			</p>
		</div>
	</Upload>
	<Button class="cert-botton" @click="batchImport">遮罩层</Button>
</div>

batchImport() {
	// 上传文件前询问是否为证书
	this.$Modal.confirm({
		title: '此次上传资料是否为证书',
		// content: '<p style="font-size: 16px;"></p>',
		okText: '是',
		cancelText: '否',
		onOk: () => {
			// 点击'是',fileTag为true,后面根据此字段判断
			this.fileTag = true
			// 通过 upload1 的 ref 触发点击事件
			this.$refs["upload1"].click()
		},
		onCancel: () => {
			this.fileTag = false
			this.$refs["upload1"].click()
		}
	});
},

Button应该隐藏,只需要点击功能,不需要样式:

.cert-botton {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 115px;
	opacity: 0;
}

最终样式:
在这里插入图片描述

### 使用 Selenium 处理通过弹出窗口进行文件上传 当涉及到自动化测试中的文件上传操作,通常会遇到两种情况:一种是标准的 HTML 文件输入字段;另一种则是更复杂的场景,比如涉及浏览器或应用程序级别的对话。对于后者,即通过弹出窗口来实现文件上传的情况,可以采用特定策略。 为了应对这种类型的挑战,在使用 Python 的情况下,可以通过 `selenium` 库配合其他工具如 `pyautogui` 或者直接利用 WebDriver 提供的功能完成任务。下面是一个具体的例子: #### 方法一:模拟键盘事件发送路径给打开保存对话 (适用于某些非标准HTML表单) 如果目标网站触发的是操作系统层面的标准文件选择器,则可以直接向该元素发送绝对文件路径字符串作为输入[^1]。 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get('http://example.com') upload_element = driver.find_element_by_id("fileInput") # 替换成实际ID upload_element.send_keys("/path/to/file.txt") ``` 这段代码假设页面上有一个具有唯一 ID 属性名为 `"fileInput"` 的 `<input type="file">` 元素,并且此方法能够绕过任何可能出现的本地安全警告提示框而无需额外交互。 #### 方法二:处理 JavaScript 弹窗或其他自定义UI组件 如果是基于JavaScript创建的模态对话或者其他形式的前端控件而非原生文件选取器,那么可能需要先定位到对应的按钮点击它以显示隐藏域,之后再执行上述类似的 sendKeys 操作或将文件拖放到指定区域。 ```python # 假设存在一个用于开启文件选择器的按钮 open_file_chooser_button = driver.find_element_by_css_selector(".custom-file-input-button") open_file_chooser_button.click() # 接下来按照之的方式找到真正的<input>标签并设置其value属性 actual_input_field = driver.switch_to.active_element actual_input_field.send_keys("/path/to/your/image.jpg") ``` 需要注意的是,不同应用可能会有不同的行为模式,因此具体实施细节取决于被测对象的具体结构和技术栈特点。此外,确保所使用的 XPath、CSS Selectors 等定位表达式足够健壮以便适应潜在的变化也很重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值