一、setInputFiles上传文件
setInputFiles 是java 提供的上传文件的方法。
传参如图

java
locator.setInputFiles(Paths.get("D:\\屏幕截图.png"));
二、例子
有如下html 网站,上传按钮

①工具类TestPlayWright
java
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
java
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();
}
}
③执行效果如图:

④想要上传多个,只要分装下方法
java
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 就行,谢谢大家的支持,可以点个赞或转发。谢谢大家~
想要工具可以私聊 或者直接打赏哈~