Using 'setInputFiles' method, we can set the value of the file input.
Example
Path[] paths = { Paths.get(filePath1), Paths.get(filePath2) };
page.locator("#myFile").setInputFiles(paths);
Find the below working application.
emp.json
{
"id": 1,
"name": "Krishna",
"age": 32
}
address.json
{
"city": "Bangalore",
"country": "India"
}
multiFileUpload.html
<!DOCTYPE html>
<html>
<head>
<title>File upload example</title>
<script>
function appendFileContent(content) {
const node = document.createElement("p");
const textnode = document.createTextNode(content);
node.appendChild(textnode);
document.getElementById("fileContent").appendChild(node);
}
function readFile(file) {
const reader = new FileReader();
reader.onload = evt => {
appendFileContent(reader.result);
};
reader.readAsText(file);
}
function init() {
const fileSelector = document.getElementById("myFile");
fileSelector.addEventListener("change", event => {
const fileList = event.target.files;
for (const file of fileList) {
readFile(file);
}
});
}
</script>
</head>
<body onload="init()">
<p>Click on the "Choose File" button to upload one or files:</p>
<input type="file" id="myFile" name="filename" multiple />
<pre id="fileContent"></pre>
</body>
</html>
FileUtil.java
package com.sample.app.util;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class FileUtil {
public static String resourceAsString(String resourceName) throws IOException {
ClassLoader classLoader = FileUtil.class.getClassLoader();
URL url = classLoader.getResource(resourceName);
if (url == null) {
return null;
}
URLConnection urlConnection = url.openConnection();
urlConnection.setUseCaches(false);
try (InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream())) {
char[] buffer = new char[1048];
StringBuilder builder = new StringBuilder();
int count = -1;
while ((count = inputStreamReader.read(buffer, 0, buffer.length)) != -1) {
builder.append(buffer, 0, count);
}
return builder.toString();
}
}
}
UploadMultipleFiles.java
package com.sample.app.miscellaneous;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import com.sample.app.util.FileUtil;
public class UploadMultipleFiles {
public static String resourceFilePath(String resourceFile) {
ClassLoader classLoader = FileUploadDemo.class.getClassLoader();
URL url = classLoader.getResource(resourceFile);
return url.getPath();
}
public static void main(String[] args) throws IOException {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium()
.launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(100));
final String content = FileUtil.resourceAsString("miscellaneous" + File.separator + "multiFileUpload.html");
Page page = browser.newPage();
page.setContent(content);
String filePath1 = resourceFilePath("files" + File.separator + "emp.json");
String filePath2 = resourceFilePath("files" + File.separator + "address.json");
Path[] paths = { Paths.get(filePath1), Paths.get(filePath2) };
page.locator("#myFile").setInputFiles(paths);
String text = page.locator("#fileContent").textContent();
System.out.println("files content : \n" + text);
}
}
}
Output
file content :
{
"id": 1,
"name": "Krishna",
"age": 32
}{
"city": "Bangalore",
"country": "India"
}
Previous Next Home
No comments:
Post a Comment