文件上传与弹窗处理

文件上传       

        首先定位到上传图片的元素,通常是input标签,type为file,然后将文件路径用send_keys()方法传入。以百度搜索页为例:

手动操作步骤

1、点击搜索框右侧相机按钮

2、点击选择文件按钮,弹窗选择要上传的本地图片

3、识别图片后,页面刷新显示搜索结果,title由"百度一下"变成"百度识图搜索结果"

 脚本实现自动化

        接下来按照手动化测试的步骤用脚本实现:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def file_upload_demo():
    # 初始化WebDriver
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")

    # 等待网页加载并找到搜索框右侧的相机按钮
    camera_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CLASS_NAME, "soutu-btn"))
    )
    camera_btn.click()

    # 等待选择文件按钮出现
    file_input = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "upload-pic"))
    )

    # 发送文件路径到文件上传输入框
    file_path = "E:/PyProjects/SoftWare_test/wx_icon.jpg"
    file_input.send_keys(file_path)

    # # 等待页面标题变成"百度视图搜索结果"
    WebDriverWait(driver, 10).until(
        EC.title_contains("百度识图搜索结果")
    )

    # driver.close()
    time.sleep(3)
    
    driver.quit()

file_upload_demo()

弹窗处理

        在页面测试操作中,有时会遇到JS生成的Alert、Confirm及Prompt弹窗,可以使用JS的switch_to.alert()方法定位到这些弹窗。然后使用text、accept、dismiss、send_keys等方法对弹窗进行操作。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def alert_demo():
    # 初始化WebDriver
    driver = webdriver.Chrome()
    driver.get("https://www.example.com")

    ### 处理简单弹窗(Alert)
    # 触发简单弹窗
    trigger_alert_btn = driver.find_element(By.ID, "trigger-alert")
    trigger_alert_btn.click()

    # 等待简单弹窗出现
    WebDriverWait(driver, 10).until(EC.alert_is_present())

    # 切换到简单弹窗并处理
    alert = driver.switch_to.alert
    # print(f"Alert text:{alert.text}")
    alert.accept()  # 点击确认按钮


    ### 处理确认弹窗(Confirm)
    # 触发简单弹窗
    trigger_confirm_btn = driver.find_element(By.ID, "trigger-confirm")
    trigger_confirm_btn.click()

    # 等待确认弹窗出现
    WebDriverWait(driver, 10).until(EC.alert_is_present())

    # 切换到确认弹窗并处理
    confirm = driver.switch_to.alert
    # print(f"Confirm text:{confirm.text}")
    confirm.accept()    # 点击确认按钮
    # confirm.dismiss()   # 点击取消按钮


    ### 处理提示弹窗(Prompt)
    # 触发提示弹窗
    trigger_prompt_btn = driver.find_element(By.ID, "trigger-prompt")
    trigger_prompt_btn.click()

    # 等待提示弹窗出现
    WebDriverWait(driver, 10).until(EC.alert_is_present())
    
    # 切换到提示弹窗并处理
    prompt = driver.switch_to.alert
    print(f"Prompt text:{prompt.text}")
    prompt.send_keys("Selenium")    # 输入文本
    prompt.accept() # 点击确认按钮
    # prompt.dismiss() # 点击取消按钮
    
    driver.quit()
    
alert_demo()
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现弹窗上传形式可以使用以下步骤: 1. 引入依赖 在 pom.xml 文件中引入 spring-boot-starter-thymeleaf 和 spring-boot-starter-web 依赖。 2. 编写 HTML 编写一个 HTML 文件,包含一个按钮和一个上传文件的表单。按钮点击事件触发弹窗打开。 示例代码: ``` <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Upload File</title> <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"> </head> <body> <div class="container"> <h2>Upload File</h2> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#uploadModal">Upload</button> <div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Upload File</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <form th:action="@{/upload}" method="post" enctype="multipart/form-data"> <div class="form-group"> <label for="file">File</label> <input type="file" class="form-control-file" id="file" name="file"> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> </div> <script th:src="@{/js/jquery.min.js}"></script> <script th:src="@{/js/bootstrap.min.js}"></script> </body> </html> ``` 3. 编写控制器 编写一个控制器,处理上传文件的请求。 示例代码: ``` @Controller public class UploadController { @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { // 处理上传文件 return "redirect:/success.html"; } } ``` 4. 配置文件上传相关参数 在 application.properties 文件中配置上传文件相关参数。 示例代码: ``` # 上传文件最大大小 spring.servlet.multipart.max-file-size=10MB # 上传文件总大小 spring.servlet.multipart.max-request-size=10MB ``` 以上就是使用 Spring Boot 实现弹窗上传形式的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值