playwright-setInputFiles 上传文件

一、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 就行,谢谢大家的支持,可以点个赞或转发。谢谢大家~

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