Wednesday 5 July 2023

Playwright: Open a page in new tab

Using the keyboard modifier 'META', we can open the url in a new tab.

 

Example

List<KeyboardModifier> modifiers = Arrays.asList(KeyboardModifier.META);
clickOptions.setModifiers(modifiers);
page.locator("a#java").click(clickOptions);

Find the below working application.

 

openInNewTab.html

<!DOCTYPE html>
<html>

<head>
	<title>Hello World</title>
</head>

<body>

	<form onsubmit="return false;">

		<table>
			<tr>
				<td>
					<p>Java</p>
				</td>
				<td> <a href="https://self-learning-java-tutorial.blogspot.com/" id="java">Java tutorial</a> </td>
			</tr>

			<tr>
				<td>
					<p>Playwright</p>
				</td>
				<td> <a href="https://playwright.dev/" id="playwright">Playwright tutorial</a> </td>
			</tr>


		</table>

	</form>


</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();
		}

	}
}

OpenInNewTab.java

package com.sample.app.miscellaneous;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Locator.ClickOptions;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import com.microsoft.playwright.options.KeyboardModifier;
import com.sample.app.util.FileUtil;

public class OpenInNewTab {

	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 + "openInNewTab.html");

			Page page = browser.newPage();
			page.setContent(content);

			ClickOptions clickOptions = new ClickOptions();

			List<KeyboardModifier> modifiers = Arrays.asList(KeyboardModifier.META);
			clickOptions.setModifiers(modifiers);
			page.locator("a#java").click(clickOptions);
			page.locator("a#playwright").click(clickOptions);

			page.waitForTimeout(8000);

			// Get all the opened pages in the context
			List<Page> pages = page.context().pages();
			for (Page tempPage : pages) {
				System.out.println(tempPage.title());
			}

		}
	}

}

Output

Hello World
Fast and reliable end-to-end testing for modern web apps | Playwright
Programming for beginners




Previous                                                 Next                                                 Home

No comments:

Post a Comment