fix: generate frameByUrl from api.json (#285)

This commit is contained in:
Yury Semikhatsky 2021-02-12 16:23:04 -08:00 committed by GitHub
parent 6fb0b01a17
commit b8a774eecc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 31 additions and 19 deletions

View File

@ -1904,16 +1904,31 @@ public interface Page extends AutoCloseable {
* [working with selectors](./selectors.md) for more details.
*/
void focus(String selector, FocusOptions options);
Frame frameByName(String name);
Frame frameByUrl(String glob);
Frame frameByUrl(Pattern pattern);
/**
* Returns frame matching the specified criteria. Either {@code name} or {@code url} must be specified.
*
*
* @param frameSelector Frame name or other frame lookup options.
* @param name Frame name specified in the {@code iframe}'s {@code name} attribute.
*/
Frame frameByUrl(Predicate<String> predicate);
Frame frame(String name);
/**
* Returns frame with matching URL.
*
* @param url A glob pattern, regex pattern or predicate receiving frame's {@code url} as a [URL] object.
*/
Frame frameByUrl(String url);
/**
* Returns frame with matching URL.
*
* @param url A glob pattern, regex pattern or predicate receiving frame's {@code url} as a [URL] object.
*/
Frame frameByUrl(Pattern url);
/**
* Returns frame with matching URL.
*
* @param url A glob pattern, regex pattern or predicate receiving frame's {@code url} as a [URL] object.
*/
Frame frameByUrl(Predicate<String> url);
/**
* An array of all frames attached to the page.
*/

View File

@ -687,7 +687,7 @@ public class PageImpl extends ChannelOwner implements Page {
}
@Override
public Frame frameByName(String name) {
public Frame frame(String name) {
for (Frame frame : frames) {
if (name.equals(frame.name())) {
return frame;

View File

@ -47,7 +47,7 @@ public class TestElementHandleBoundingBox extends TestBase {
void shouldHandleNestedFrames() {
page.setViewportSize(500, 500);
page.navigate(server.PREFIX + "/frames/nested-frames.html");
Frame nestedFrame = page.frameByName("dos");
Frame nestedFrame = page.frame("dos");
assertNotNull(nestedFrame);
ElementHandle elementHandle = nestedFrame.querySelector("div");
BoundingBox box = elementHandle.boundingBox();

View File

@ -210,8 +210,8 @@ public class TestPageBasic extends TestBase {
@Test
void pageFrameShouldRespectName() {
page.setContent("<iframe name=target></iframe>");
assertNull(page.frameByName("bogus"));
Frame frame = page.frameByName("target");
assertNull(page.frame("bogus"));
Frame frame = page.frame("target");
assertNotNull(frame);
assertEquals(page.mainFrame().childFrames().get(0), frame);
}
@ -272,7 +272,7 @@ public class TestPageBasic extends TestBase {
@Test
void framePressShouldWork() {
page.setContent("<iframe name=inner src='" + server.PREFIX + "/input/textarea.html'></iframe>");
Frame frame = page.frameByName("inner");
Frame frame = page.frame("inner");
frame.press("textarea", "a");
assertEquals("a", frame.evaluate("() => document.querySelector('textarea').value"));
}

View File

@ -1 +1 @@
1.9.0-next-1613169016000
1.9.0-next-1613173968000

View File

@ -464,12 +464,6 @@ class Method extends Element {
private static Map<String, String[]> customSignature = new HashMap<>();
static {
customSignature.put("Page.setViewportSize", new String[]{"void setViewportSize(int width, int height);"});
customSignature.put("Page.frame", new String[]{
"Frame frameByName(String name);",
"Frame frameByUrl(String glob);",
"Frame frameByUrl(Pattern pattern);",
"Frame frameByUrl(Predicate<String> predicate);",
});
customSignature.put("BrowserContext.cookies", new String[]{
"default List<Cookie> cookies() { return cookies((List<String>) null); }",
"default List<Cookie> cookies(String url) { return cookies(Arrays.asList(url)); }",
@ -568,6 +562,11 @@ class Method extends Element {
returnType = new TypeRef(this, jsonElement.get("type"));
if (jsonElement.has("args")) {
for (JsonElement arg : jsonElement.getAsJsonArray("args")) {
JsonObject paramObj = arg.getAsJsonObject();
if (paramObj.get("name").getAsString().equals("options") &&
paramObj.getAsJsonObject("type").getAsJsonArray("properties").size() == 0) {
continue;
}
params.add(new Param(this, arg.getAsJsonObject()));
}
}

View File

@ -52,8 +52,6 @@ class Types {
add("Page.exposeFunction.callback", "function", "FunctionCallback");
// The method has custom signatures
add("Page.frame.frameSelector", "Object|string", "Custom", new Empty());
add("Page.frame.options", "Object", "FrameOptions", new Empty());
add("Page.selectOption.values", "Array<ElementHandle>|Array<Object>|Array<string>|ElementHandle|Object|null|string", "String");
add("Page.setInputFiles.files", "Array<Object>|Array<path>|Object|path", "String");
add("Frame.selectOption.values", "Array<ElementHandle>|Array<Object>|Array<string>|ElementHandle|Object|null|string", "String");