org.openqa.selenium.devtools.domsnapshot.model.LayoutTreeNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of selenium-devtools Show documentation
Show all versions of selenium-devtools Show documentation
Selenium automates browsers. That's it! What you do with that power is entirely up to you.
package org.openqa.selenium.devtools.domsnapshot.model;
import org.openqa.selenium.Beta;
import org.openqa.selenium.json.JsonInput;
/**
* Details of an element in the DOM tree with a LayoutObject.
*/
public class LayoutTreeNode {
private final java.lang.Integer domNodeIndex;
private final org.openqa.selenium.devtools.dom.model.Rect boundingBox;
private final java.util.Optional layoutText;
private final java.util.Optional> inlineTextNodes;
private final java.util.Optional styleIndex;
private final java.util.Optional paintOrder;
private final java.util.Optional isStackingContext;
public LayoutTreeNode(java.lang.Integer domNodeIndex, org.openqa.selenium.devtools.dom.model.Rect boundingBox, java.util.Optional layoutText, java.util.Optional> inlineTextNodes, java.util.Optional styleIndex, java.util.Optional paintOrder, java.util.Optional isStackingContext) {
this.domNodeIndex = java.util.Objects.requireNonNull(domNodeIndex, "domNodeIndex is required");
this.boundingBox = java.util.Objects.requireNonNull(boundingBox, "boundingBox is required");
this.layoutText = layoutText;
this.inlineTextNodes = inlineTextNodes;
this.styleIndex = styleIndex;
this.paintOrder = paintOrder;
this.isStackingContext = isStackingContext;
}
/**
* The index of the related DOM node in the `domNodes` array returned by `getSnapshot`.
*/
public java.lang.Integer getDomNodeIndex() {
return domNodeIndex;
}
/**
* The bounding box in document coordinates. Note that scroll offset of the document is ignored.
*/
public org.openqa.selenium.devtools.dom.model.Rect getBoundingBox() {
return boundingBox;
}
/**
* Contents of the LayoutText, if any.
*/
public java.util.Optional getLayoutText() {
return layoutText;
}
/**
* The post-layout inline text nodes, if any.
*/
public java.util.Optional> getInlineTextNodes() {
return inlineTextNodes;
}
/**
* Index into the `computedStyles` array returned by `getSnapshot`.
*/
public java.util.Optional getStyleIndex() {
return styleIndex;
}
/**
* Global paint order index, which is determined by the stacking order of the nodes. Nodes
* that are painted together will have the same index. Only provided if includePaintOrder in
* getSnapshot was true.
*/
public java.util.Optional getPaintOrder() {
return paintOrder;
}
/**
* Set to true to indicate the element begins a new stacking context.
*/
public java.util.Optional getIsStackingContext() {
return isStackingContext;
}
private static LayoutTreeNode fromJson(JsonInput input) {
java.lang.Integer domNodeIndex = null;
org.openqa.selenium.devtools.dom.model.Rect boundingBox = null;
java.util.Optional layoutText = java.util.Optional.empty();
java.util.Optional> inlineTextNodes = java.util.Optional.empty();
java.util.Optional styleIndex = java.util.Optional.empty();
java.util.Optional paintOrder = java.util.Optional.empty();
java.util.Optional isStackingContext = java.util.Optional.empty();
input.beginObject();
while (input.hasNext()) {
switch(input.nextName()) {
case "domNodeIndex":
domNodeIndex = input.nextNumber().intValue();
break;
case "boundingBox":
boundingBox = input.read(org.openqa.selenium.devtools.dom.model.Rect.class);
break;
case "layoutText":
layoutText = java.util.Optional.ofNullable(input.nextString());
break;
case "inlineTextNodes":
inlineTextNodes = java.util.Optional.ofNullable(input.read(new com.google.common.reflect.TypeToken>() {
}.getType()));
break;
case "styleIndex":
styleIndex = java.util.Optional.ofNullable(input.nextNumber().intValue());
break;
case "paintOrder":
paintOrder = java.util.Optional.ofNullable(input.nextNumber().intValue());
break;
case "isStackingContext":
isStackingContext = java.util.Optional.ofNullable(input.nextBoolean());
break;
default:
input.skipValue();
break;
}
}
input.endObject();
return new LayoutTreeNode(domNodeIndex, boundingBox, layoutText, inlineTextNodes, styleIndex, paintOrder, isStackingContext);
}
}