当前位置: 首页 > news >正文

playwright-setInputFiles 上传文件

一、setInputFiles上传文件

setInputFiles 是java 提供的上传文件的方法。

传参如图

locator.setInputFiles(Paths.get("D:\\屏幕截图.png"));

二、例子

有如下html 网站,上传按钮

①工具类TestPlayWright

import com.microsoft.playwright.*; import com.microsoft.playwright.options.AriaRole; import com.microsoft.playwright.options.ServiceWorkerPolicy; import java.util.ArrayList; import java.util.List; public class TestPlayWright { public Playwright playwright; public Browser browser; public BrowserContext context; public Page page; public int slowMo = 200; public boolean headless = false; public String bowserName = "CHROMIUM"; public Page getPage() { return page; } public void init(){ List<String> argslist = new ArrayList<String>(); argslist.add("--window-position=" + -8 + "," + 0); playwright = Playwright.create(); switch (bowserName) { case "CHROMIUM": browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setArgs(argslist) .setHeadless(headless) .setSlowMo(slowMo)); break; case "FIREFOX": browser = playwright.firefox().launch(new BrowserType.LaunchOptions() .setHeadless(headless).setArgs(argslist) .setSlowMo(slowMo)); break; case "WEBKIT": browser = playwright.webkit().launch(new BrowserType.LaunchOptions() .setHeadless(headless).setArgs(argslist) .setSlowMo(slowMo)); break; } assert browser != null; Browser.NewContextOptions contextOpts = new Browser.NewContextOptions() .setServiceWorkers(ServiceWorkerPolicy.BLOCK); // 屏蔽所有 Service Worker context = browser.newContext(contextOpts); // # 2. 清除当前上下文的所有 Cookie(推荐) context.clearCookies(); page = context.newPage(); } public void browserClose(){ if(browser!=null){ browser.close(); } } public void playwrightClose() { if(playwright!=null){ playwright.close(); } } }

②新建测试类 TestUpload

import com.microsoft.playwright.Locator; import com.microsoft.playwright.Page; import java.nio.file.Path; import java.nio.file.Paths; public class TestUpload { public static void main(String[] args) { TestPlayWright test = new TestPlayWright(); //初始化创建page对象 test.init(); Page page = test.getPage(); //打开测试页面 page.navigate("file:///E:/playwright/testDemo/全类型HTML表单&iframe综合测试页.html"); //获取 提示文本为【请输入密码】的定位 Locator locator = page.locator("//*[@id=\"testForm\"]/div[1]/input[17]"); //悬浮操作 locator.hover(); //高亮 locator.highlight(); //停2秒 page.waitForTimeout(2000); //上传文件 locator.setInputFiles(Paths.get("D:\\屏幕截图.png")); //停2秒 page.waitForTimeout(2000); //关闭浏览器 test.browserClose(); //关闭 playwright test.playwrightClose(); } }

③执行效果如图:

④想要上传多个,只要分装下方法

import com.microsoft.playwright.Locator; import com.microsoft.playwright.Page; import java.nio.file.Path; import java.nio.file.Paths; public class TestUpload { public static void main(String[] args) { TestPlayWright test = new TestPlayWright(); //初始化创建page对象 test.init(); Page page = test.getPage(); //打开测试页面 page.navigate("file:///E:/playwright/testDemo/全类型HTML表单&iframe综合测试页.html"); //获取 上传文件按钮的定位 Locator locator = page.locator("//*[@id=\"testForm\"]/div[1]/input[17]"); //悬浮操作 locator.hover(); //高亮 locator.highlight(); //停2秒 page.waitForTimeout(2000); //上传文件 // locator.setInputFiles(Paths.get("D:\\屏幕截图.png")); //上传多个文件 uploadFile(locator,"D:\\屏幕截图.png","D:\\屏幕截图.png"); //停2秒 page.waitForTimeout(2000); //关闭浏览器 test.browserClose(); //关闭 playwright test.playwrightClose(); } /** * 本地文件上传 */ public static void uploadFile(Locator locator,String... filePaths) { Path[] paths = new Path[filePaths.length]; for (int i = 0; i < filePaths.length; i++) { paths[i] = Paths.get(filePaths[i]); } locator.setInputFiles(paths); } }

运行效果如图:

二、通过葫芦娃ui自动化工具操作

①打开葫芦娃ui自动化工具

②加载对应step.xlsx和data.xlsx

③step.xlsx配置如图:

case sheet输入如下

④创建对应sheet [ 测试上传文件] 如下,定位方法选择 uploadFile:

⑤切换到工具,点击运行:

⑥执行结果如下:

运行效果和上面一样

完全零代码,直接维护excel 就行,谢谢大家的支持,可以点个赞或转发。谢谢大家~

想要工具可以私聊 或者直接打赏哈~

http://www.cnnetsun.cn/news/3035014.html

相关文章:

  • 2026年GEO优化系统源码如何选?三大核心指标帮你避坑
  • 道歉声明登报如何写?道歉声明登报咋办理?多少钱?
  • 【朱红大漆戗金梅花碗】一剪红梅献祖国
  • 选题指导,LW(文理科均可)
  • 2026年泉州GEO优化优质服务商最新推荐
  • 重塑创业思维、培养创新能力必看书籍推荐
  • 帝国理工学院研究团队破解“电力调度难题“
  • 斯坦福、伯克利等:如何从零开始“喂饱“一个能干活的AI智能体?
  • 在 ComfyUI 中遇到 “Image blocked by safety filter” 提示
  • 什么是描述性统计?它在数据分析中的作用是什么?
  • 第03课:GDB 常用的调试命令概览
  • 如何分析干部队伍年龄结构,找准“盖层”和“断层”?
  • 老中青比例不是“数字游戏”,如何科学把握年轻干部选拔标准?
  • 101010旁观:芒格与巴菲特,力荐思维模型
  • Linux服务器开发通用规范
  • 2026年,普通程序员如何从0到1转型AI大模型
  • 历史对话能作为提示词吗?
  • 问题的根源:旧的 unsafe 太粗糙
  • 刮宫需要休息几天?
  • 曲线参数的实际应用解析
  • 多轮上下文记忆
  • 我把埋点测试做成了一条闭环流水线:真机自动验证、自动提 Bug、自动回归复测
  • 【Java SE】异常链
  • 【PolarCTF】铁子,来一道
  • OpenCVSharp:使用MOG进行运动物体识别
  • 别再把大模型比作马:Agent与Harness的底层工程真相
  • 前言:AI 编程的时代来了
  • Cloud Agent 开发笔记(3):Web 交互与数据持久化
  • MacOS 安装Seismic Unix
  • 洛谷 P1007 独木桥