Class HtmlPage
- java.lang.Object
-
- org.htmlunit.html.DomNode
-
- org.htmlunit.SgmlPage
-
- org.htmlunit.html.HtmlPage
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,Page
,org.w3c.dom.Document
,org.w3c.dom.Node
- Direct Known Subclasses:
XHtmlPage
public class HtmlPage extends SgmlPage
A representation of an HTML page returned from a server.This class provides different methods to access the page's content like
getForms()
,getAnchors()
,getElementById(String)
, ... as well as the very powerful inherited methodsDomNode.getByXPath(String)
andDomNode.getFirstByXPath(String)
for fine grained user specific access to child nodes.Child elements allowing user interaction provide methods for this purpose like
DomElement.click()
,HtmlElement.type(String)
,HtmlOption.setSelected(boolean)
, ...HtmlPage instances should not be instantiated directly. They will be returned by
WebClient.getPage(String)
when the content type of the server's response istext/html
(or one of its variations).
Example:
final HtmlPage page = webClient.
getPage
("http://mywebsite/some/page.html");- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
HtmlPage.ComputedStylesCache
Cache computed styles when possible, because their calculation is very expensive.(package private) static class
HtmlPage.DocumentPositionComparator
private class
HtmlPage.DomHtmlAttributeChangeListenerImpl
Listens for changes anywhere in the document and evicts cached computed styles whenever something relevant changes.(package private) static class
HtmlPage.JavaScriptLoadResult
Various possible external JavaScript file loading results.-
Nested classes/interfaces inherited from class org.htmlunit.html.DomNode
DomNode.ChildIterator, DomNode.DescendantElementsIterator<T extends DomNode>
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.HashSet<java.lang.String>
ACCEPTABLE_TAG_NAMES
private java.util.List<PostponedAction>
afterLoadActions_
private java.util.Collection<HtmlAttributeChangeListener>
attributeListeners_
private static java.util.Set<java.lang.String>
ATTRIBUTES_AFFECTING_PARENT
Definition of special cases for the smart DomHtmlAttributeChangeListenerImplprivate java.util.List<java.lang.AutoCloseable>
autoCloseableList_
private HtmlBase
base_
private java.net.URL
baseUrl_
private boolean
cleaning_
private HtmlPage.ComputedStylesCache
computedStylesCache_
private static java.util.Comparator<DomElement>
documentPositionComparator
private HTMLParserDOMBuilder
domBuilder_
private ElementFromPointHandler
elementFromPointHandler_
private DomElement
elementWithFocus_
private java.util.SortedSet<BaseFrameElement>
frameElements_
private java.util.Map<java.lang.String,java.util.SortedSet<DomElement>>
idMap_
private int
inlineSnippetParserCount_
private java.lang.Object
lock_
private static org.apache.commons.logging.Log
LOG
private java.util.Map<java.lang.String,java.util.SortedSet<DomElement>>
nameMap_
private java.nio.charset.Charset
originalCharset_
private int
parserCount_
private java.util.List<SimpleRange>
selectionRanges_
private int
snippetParserCount_
private static java.util.HashSet<java.lang.String>
TABBABLE_TAGS
-
Fields inherited from class org.htmlunit.html.DomNode
PROPERTY_ELEMENT, READY_STATE_COMPLETE, READY_STATE_INTERACTIVE, READY_STATE_LOADED, READY_STATE_LOADING, READY_STATE_UNINITIALIZED
-
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
-
-
Constructor Summary
Constructors Constructor Description HtmlPage(WebResponse webResponse, WebWindow webWindow)
Creates an instance of HtmlPage.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
addAfterLoadAction(PostponedAction action)
Adds an action that should be executed once the page has been loaded.void
addAutoCloseable(java.lang.AutoCloseable autoCloseable)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Adds anAutoCloseable
, which would be closed during thecleanUp()
.private void
addElement(java.util.Map<java.lang.String,java.util.SortedSet<DomElement>> map, DomElement element, java.lang.String attribute, boolean recurse)
void
addHtmlAttributeChangeListener(HtmlAttributeChangeListener listener)
Adds an HtmlAttributeChangeListener to the listener list.(package private) void
addMappedElement(DomElement element)
Adds an element to the ID and name maps, if necessary.(package private) void
addMappedElement(DomElement element, boolean recurse)
Adds an element to the ID and name maps, if necessary.org.w3c.dom.Node
adoptNode(org.w3c.dom.Node source)
Not yet implemented.private void
calculateBase()
protected void
checkChildHierarchy(org.w3c.dom.Node newChild)
Check for insertion errors for a new child node.private void
checkRecursion()
void
cleanUp()
Clean up this page.void
clearComputedStyles()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Clears the computed styles.void
clearComputedStyles(DomElement element)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Clears the computed styles for a specificElement
.void
clearComputedStylesUpToRoot(DomElement element)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Clears the computed styles for a specificElement
and all parent elements.protected HtmlPage
clone()
Creates a clone of this instance, and clears cached state to be not shared with the original.HtmlPage
cloneNode(boolean deep)
org.w3c.dom.Attr
createAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName)
Not yet implemented.DomElement
createElement(java.lang.String tagName)
DomElement
createElementNS(java.lang.String namespaceURI, java.lang.String qualifiedName)
org.w3c.dom.EntityReference
createEntityReference(java.lang.String id)
Not yet implemented.org.w3c.dom.ProcessingInstruction
createProcessingInstruction(java.lang.String namespaceURI, java.lang.String qualifiedName)
Not yet implemented.private static java.util.Comparator<HtmlElement>
createTabOrderComparator()
void
deregisterFramesIfNeeded()
Deregister frames that are no longer in use.private void
executeDeferredScriptsIfNeeded()
Executes any deferred scripts, if necessary.private boolean
executeEventHandlersIfNeeded(java.lang.String eventType)
Looks for and executes any appropriate event handlers.ScriptResult
executeJavaScript(java.lang.String sourceCode)
Executes the specified JavaScript code within the page.ScriptResult
executeJavaScript(java.lang.String sourceCode, java.lang.String sourceName, int startLine)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.ScriptResult
executeJavaScriptFunction(java.lang.Object function, java.lang.Object thisObject, java.lang.Object[] args, DomNode htmlElementScope)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Execute a Function in the given context.private ScriptResult
executeJavaScriptFunction(org.htmlunit.corejs.javascript.Function function, org.htmlunit.corejs.javascript.Scriptable thisObject, java.lang.Object[] args, DomNode htmlElementScope)
private void
executeRefreshIfNeeded()
If a refresh has been specified either through a meta tag or an HTTP response header, then perform that refresh.(package private) void
fireHtmlAttributeAdded(HtmlAttributeChangeEvent event)
Notifies all registered listeners for the given event to add an attribute.(package private) void
fireHtmlAttributeRemoved(HtmlAttributeChangeEvent event)
Notifies all registered listeners for the given event to remove an attribute.(package private) void
fireHtmlAttributeReplaced(HtmlAttributeChangeEvent event)
Notifies all registered listeners for the given event to replace an attribute.HtmlElement
getActiveElement()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.HtmlAnchor
getAnchorByHref(java.lang.String href)
Returns theHtmlAnchor
with the specified href.HtmlAnchor
getAnchorByName(java.lang.String name)
Returns theHtmlAnchor
with the specified name.HtmlAnchor
getAnchorByText(java.lang.String text)
Returns the first anchor with the specified text.java.util.List<HtmlAnchor>
getAnchors()
Returns a list of all anchors contained in this page.java.net.URL
getBaseURL()
The base URL used to resolve relative URLs.HtmlElement
getBody()
Returns thebody
element (orframeset
element), ornull
if it does not yet exist.java.nio.charset.Charset
getCharset()
Returns the encoding.java.lang.String
getContentType()
Returns the content type of this page.private HtmlPage.ComputedStylesCache
getCssPropertiesCache()
HtmlElement
getDocumentElement()
Returns the document element.java.lang.String
getDocumentURI()
Not yet implemented.HTMLParserDOMBuilder
getDOMBuilder()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returns the current builder.org.w3c.dom.DOMConfiguration
getDomConfig()
Not yet implemented.DomElement
getElementById(java.lang.String elementId)
<E extends DomElement>
EgetElementByName(java.lang.String name)
Returns the element with the specified name.HtmlElement
getElementFromPoint(int x, int y)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returns the element for the specified x coordinate and the specified y coordinate.java.util.List<DomElement>
getElementsById(java.lang.String elementId)
Returns the elements with the specified ID.java.util.List<DomElement>
getElementsByIdAndOrName(java.lang.String idAndOrName)
Returns the elements with the specified string for their name or ID.java.util.List<DomElement>
getElementsByName(java.lang.String name)
Returns the elements with the specified name attribute.private static DomElement
getFirstChildElement(DomElement startElement, java.lang.Class<?> clazz)
Gets the first child of startElement that is an instance of the given class.private DomElement
getFirstChildElementRecursive(DomElement startElement, java.lang.Class<?> clazz)
Gets the first child of startElement or it's children that is an instance of the given class.DomElement
getFocusedElement()
Returns the element with the focus or null if no element has the focus.HtmlForm
getFormByName(java.lang.String name)
Returns the first form that matches the specified name.java.util.List<HtmlForm>
getForms()
Returns a list of all the forms in this page.FrameWindow
getFrameByName(java.lang.String name)
Returns the first frame contained in this page with the specified name.java.util.List<FrameWindow>
getFrames()
Returns a list containing all the frames (from frame and iframe tags) in this page.java.net.URL
getFullyQualifiedUrl(java.lang.String relativeUrl)
Given a relative URL (ie/foo
), returns a fully-qualified URL based on the URL that was used to load this page.HtmlElement
getHead()
Returns the head element.HtmlElement
getHtmlElementByAccessKey(char accessKey)
Returns the HTML element that is assigned to the specified access key.<E extends HtmlElement>
EgetHtmlElementById(java.lang.String elementId)
Returns the HTML element with the specified ID.java.util.List<HtmlElement>
getHtmlElementsByAccessKey(char accessKey)
Returns all the HTML elements that are assigned to the specified access key.org.w3c.dom.DOMImplementation
getImplementation()
Not yet implemented.java.lang.String
getInputEncoding()
Not yet implemented.protected java.util.List<HtmlMeta>
getMetaTags(java.lang.String httpEquiv)
Gets the meta tag for a givenhttp-equiv
value.java.util.Map<java.lang.String,java.lang.String>
getNamespaces()
Returns all namespaces defined in the root element of this page.org.w3c.dom.Document
getOwnerDocument()
HtmlPage
getPage()
Returns the page that contains this node.private java.lang.String
getRefreshStringOrNull()
Returns an auto-refresh string if specified.java.lang.String
getResolvedTarget(java.lang.String elementTarget)
Given a target attribute value, resolve the target using a base target for the page.java.util.List<SimpleRange>
getSelectionRanges()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.boolean
getStrictErrorChecking()
Not yet implemented.ComputedCssStyleDeclaration
getStyleFromCache(DomElement element, java.lang.String normalizedPseudo)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.java.util.List<CssStyleSheet>
getStyleSheets()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.java.util.List<java.lang.String>
getTabbableElementIds()
Returns a list of ids (strings) that correspond to the tabbable elements in this page.java.util.List<HtmlElement>
getTabbableElements()
Returns a list of all elements that are tabbable in the order that will be used for tabbing.private HtmlTitle
getTitleElement()
Gets the title element for this page.java.lang.String
getTitleText()
Returns the title of this page or an empty string if the title wasn't specified.java.lang.String
getXmlEncoding()
boolean
getXmlStandalone()
java.lang.String
getXmlVersion()
boolean
handles(Event event)
Indicates if the provided event can be applied to this node.boolean
hasCaseSensitiveTagNames()
Returnstrue
if this page has case-sensitive tag names,false
otherwise.org.w3c.dom.Node
importNode(org.w3c.dom.Node importedNode, boolean deep)
Not yet implemented.void
initialize()
Initialize this page.boolean
isAttachedToPage()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Indicates if this node is currently attached to the page.boolean
isBeingParsed()
Returnstrue
if an HTML parser is operating on this page, adding content to it.boolean
isHtmlPage()
Returns true if this page is an HtmlPage.(package private) static boolean
isMappedElement(org.w3c.dom.Document document, java.lang.String attributeName)
Indicates if the attribute name indicates that the owning element is mapped.boolean
isOnbeforeunloadAccepted()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.private boolean
isOnbeforeunloadAccepted(HtmlPage page, Event event)
boolean
isParsingHtmlSnippet()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returnstrue
if an HTML parser is parsing a non-inline HTML snippet to add content to this page.boolean
isParsingInlineHtmlSnippet()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returnstrue
if an HTML parser is parsing an inline HTML snippet to add content to this page.boolean
isQuirksMode()
Returns whether the current page mode is inquirks mode
or instandards mode
.(package private) HtmlPage.JavaScriptLoadResult
loadExternalJavaScriptFile(java.lang.String srcAttribute, java.nio.charset.Charset scriptCharset)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.(package private) void
loadFrames()
Loads the content of the contained frames.private java.lang.Object
loadJavaScriptFromUrl(java.net.URL url, java.nio.charset.Charset scriptCharset)
Loads JavaScript from the specified URL.(package private) void
notifyNodeAdded(DomNode node)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.(package private) void
notifyNodeRemoved(DomNode node)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.DomElement
pressAccessKey(char accessKey)
Simulate pressing an access key.void
putStyleIntoCache(DomElement element, java.lang.String normalizedPseudo, ComputedCssStyleDeclaration style)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Caches a CSS2Properties object.private void
readObject(java.io.ObjectInputStream ois)
Page
refresh()
Refreshes the page by sending the same parameters as previously sent to get this page.void
registerInlineSnippetParsingEnd()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has finished parsing an inline HTML snippet.void
registerInlineSnippetParsingStart()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has started parsing an inline HTML snippet.void
registerParsingEnd()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has finished parsing some content for this page.void
registerParsingStart()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has started parsing some content for this page.void
registerSnippetParsingEnd()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has finished parsing a non-inline HTML snippet.void
registerSnippetParsingStart()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has started parsing a non-inline HTML snippet.private void
removeElement(java.util.Map<java.lang.String,java.util.SortedSet<DomElement>> map, DomElement element, java.lang.String attribute, boolean recurse)
void
removeHtmlAttributeChangeListener(HtmlAttributeChangeListener listener)
Removes an HtmlAttributeChangeListener from the listener list.(package private) void
removeMappedElement(DomElement element, boolean recurse, boolean descendant)
Removes an element and optionally its children from the ID and name maps, if necessary.(package private) void
removeMappedElement(HtmlElement element)
Removes an element from the ID and name maps, if necessary.org.w3c.dom.Node
renameNode(org.w3c.dom.Node newNode, java.lang.String namespaceURI, java.lang.String qualifiedName)
Not yet implemented.private java.util.List<HtmlAttributeChangeListener>
safeGetAttributeListeners()
void
save(java.io.File file)
Saves the current page, with all images, to the specified location.void
setDocumentType(org.w3c.dom.DocumentType type)
Sets the document type.void
setDocumentURI(java.lang.String documentURI)
Not yet implemented.void
setDOMBuilder(HTMLParserDOMBuilder htmlUnitDOMBuilder)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Sets the builder to allow page to send content from document.write(ln) calls.void
setElementFromPointHandler(ElementFromPointHandler elementFromPointHandler)
Sets theElementFromPointHandler
.void
setElementWithFocus(DomElement elementWithFocus)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.boolean
setFocusedElement(DomElement newElement)
Moves the focus to the specified element.boolean
setFocusedElement(DomElement newElement, boolean windowActivated)
Moves the focus to the specified element.void
setNodeValue(java.lang.String value)
void
setPrefix(java.lang.String prefix)
void
setSelectionRange(SimpleRange selectionRange)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.void
setStrictErrorChecking(boolean strictErrorChecking)
Not yet implemented.void
setTitleText(java.lang.String message)
Sets the text for the title of this page.void
setXmlStandalone(boolean xmlStandalone)
Not yet implemented.void
setXmlVersion(java.lang.String xmlVersion)
Not yet implemented.HtmlElement
tabToNextElement()
Move the focus to the next element in the tab order.HtmlElement
tabToPreviousElement()
Move the focus to the previous element in the tab order.java.lang.String
toString()
Gives a basic representation for debugging purposes.void
writeInParsedStream(java.lang.String string)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.private void
writeObject(java.io.ObjectOutputStream oos)
-
Methods inherited from class org.htmlunit.SgmlPage
asXml, createAttribute, createCDATASection, createComment, createDocumentFragment, createNodeIterator, createTextNode, getCanonicalXPath, getDoctype, getElementsByTagName, getElementsByTagNameNS, getEnclosingWindow, getNodeName, getNodeType, getUrl, getWebClient, getWebResponse, isPrinting, normalizeDocument, setEnclosingWindow, setPrinting
-
Methods inherited from class org.htmlunit.html.DomNode
addCharacterDataChangeListener, addDomChangeListener, appendChild, asNormalizedText, basicRemove, closest, compareDocumentPosition, detach, fireCharacterDataChanged, fireNodeAdded, fireNodeDeleted, getAncestors, getAttributes, getBaseURI, getByXPath, getByXPath, getChildNodes, getChildren, getDescendants, getDomElementDescendants, getEndColumnNumber, getEndLineNumber, getFeature, getFirstByXPath, getFirstByXPath, getFirstChild, getHtmlElementDescendants, getHtmlPageOrNull, getIndex, getLastChild, getLocalName, getNamespaceURI, getNextElementSibling, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousElementSibling, getPreviousSibling, getReadyState, getScriptableObject, getSelectorList, getStartColumnNumber, getStartLineNumber, getTextContent, getUserData, getVisibleText, hasAttributes, hasChildNodes, hasFeature, insertBefore, insertBefore, isAncestorOf, isAncestorOfAny, isDefaultNamespace, isDisplayed, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, mayBeDisplayed, normalize, notifyIncorrectness, onAddedToDocumentFragment, onAddedToPage, onAllChildrenAddedToPage, parseHtmlSnippet, printChildrenAsXml, printXml, processImportNode, querySelector, querySelectorAll, quietlyRemoveAndMoveChildrenTo, remove, removeAllChildren, removeCharacterDataChangeListener, removeChild, removeDomChangeListener, replace, replaceChild, setEndLocation, setParentNode, setReadyState, setScriptableObject, setStartLocation, setTextContent, setUserData
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.w3c.dom.Node
appendChild, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setTextContent, setUserData
-
-
-
-
Field Detail
-
LOG
private static final org.apache.commons.logging.Log LOG
-
documentPositionComparator
private static final java.util.Comparator<DomElement> documentPositionComparator
-
domBuilder_
private HTMLParserDOMBuilder domBuilder_
-
originalCharset_
private transient java.nio.charset.Charset originalCharset_
-
lock_
private final java.lang.Object lock_
-
idMap_
private java.util.Map<java.lang.String,java.util.SortedSet<DomElement>> idMap_
-
nameMap_
private java.util.Map<java.lang.String,java.util.SortedSet<DomElement>> nameMap_
-
frameElements_
private java.util.SortedSet<BaseFrameElement> frameElements_
-
parserCount_
private int parserCount_
-
snippetParserCount_
private int snippetParserCount_
-
inlineSnippetParserCount_
private int inlineSnippetParserCount_
-
attributeListeners_
private java.util.Collection<HtmlAttributeChangeListener> attributeListeners_
-
afterLoadActions_
private java.util.List<PostponedAction> afterLoadActions_
-
cleaning_
private boolean cleaning_
-
base_
private HtmlBase base_
-
baseUrl_
private java.net.URL baseUrl_
-
autoCloseableList_
private java.util.List<java.lang.AutoCloseable> autoCloseableList_
-
elementFromPointHandler_
private ElementFromPointHandler elementFromPointHandler_
-
elementWithFocus_
private DomElement elementWithFocus_
-
selectionRanges_
private java.util.List<SimpleRange> selectionRanges_
-
computedStylesCache_
private transient HtmlPage.ComputedStylesCache computedStylesCache_
-
TABBABLE_TAGS
private static final java.util.HashSet<java.lang.String> TABBABLE_TAGS
-
ACCEPTABLE_TAG_NAMES
private static final java.util.HashSet<java.lang.String> ACCEPTABLE_TAG_NAMES
-
ATTRIBUTES_AFFECTING_PARENT
private static final java.util.Set<java.lang.String> ATTRIBUTES_AFFECTING_PARENT
Definition of special cases for the smart DomHtmlAttributeChangeListenerImpl
-
-
Constructor Detail
-
HtmlPage
public HtmlPage(WebResponse webResponse, WebWindow webWindow)
Creates an instance of HtmlPage. An HtmlPage instance is normally retrieved withWebClient.getPage(String)
.- Parameters:
webResponse
- the web response that was used to create this pagewebWindow
- the window that this page is being loaded into
-
-
Method Detail
-
getPage
public HtmlPage getPage()
Returns the page that contains this node.
-
hasCaseSensitiveTagNames
public boolean hasCaseSensitiveTagNames()
Returnstrue
if this page has case-sensitive tag names,false
otherwise. In general, XML has case-sensitive tag names, and HTML doesn't. This is especially important during XPath matching.- Specified by:
hasCaseSensitiveTagNames
in classSgmlPage
- Returns:
true
if this page has case-sensitive tag names,false
otherwise
-
initialize
public void initialize() throws java.io.IOException, FailingHttpStatusCodeException
Initialize this page.- Throws:
java.io.IOException
- if an IO problem occursFailingHttpStatusCodeException
- if the server returns a failing status code AND the propertyWebClientOptions.setThrowExceptionOnFailingStatusCode(boolean)
is set to true.
-
addAfterLoadAction
void addAfterLoadAction(PostponedAction action)
Adds an action that should be executed once the page has been loaded.- Parameters:
action
- the action
-
cleanUp
public void cleanUp()
Clean up this page.
-
getDocumentElement
public HtmlElement getDocumentElement()
Returns the document element.- Specified by:
getDocumentElement
in interfaceorg.w3c.dom.Document
- Overrides:
getDocumentElement
in classSgmlPage
- Returns:
- the document element
-
getBody
public HtmlElement getBody()
Returns thebody
element (orframeset
element), ornull
if it does not yet exist.- Returns:
- the
body
element (orframeset
element), ornull
if it does not yet exist
-
getHead
public HtmlElement getHead()
Returns the head element.- Returns:
- the head element
-
getOwnerDocument
public org.w3c.dom.Document getOwnerDocument()
- Specified by:
getOwnerDocument
in interfaceorg.w3c.dom.Node
- Overrides:
getOwnerDocument
in classDomNode
-
importNode
public org.w3c.dom.Node importNode(org.w3c.dom.Node importedNode, boolean deep)
Not yet implemented.
-
getInputEncoding
public java.lang.String getInputEncoding()
Not yet implemented.
-
getXmlEncoding
public java.lang.String getXmlEncoding()
-
getXmlStandalone
public boolean getXmlStandalone()
-
setXmlStandalone
public void setXmlStandalone(boolean xmlStandalone) throws org.w3c.dom.DOMException
Not yet implemented.- Throws:
org.w3c.dom.DOMException
-
getXmlVersion
public java.lang.String getXmlVersion()
-
setXmlVersion
public void setXmlVersion(java.lang.String xmlVersion) throws org.w3c.dom.DOMException
Not yet implemented.- Throws:
org.w3c.dom.DOMException
-
getStrictErrorChecking
public boolean getStrictErrorChecking()
Not yet implemented.
-
setStrictErrorChecking
public void setStrictErrorChecking(boolean strictErrorChecking)
Not yet implemented.
-
getDocumentURI
public java.lang.String getDocumentURI()
Not yet implemented.
-
setDocumentURI
public void setDocumentURI(java.lang.String documentURI)
Not yet implemented.
-
adoptNode
public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source) throws org.w3c.dom.DOMException
Not yet implemented.- Throws:
org.w3c.dom.DOMException
-
getDomConfig
public org.w3c.dom.DOMConfiguration getDomConfig()
Not yet implemented.
-
renameNode
public org.w3c.dom.Node renameNode(org.w3c.dom.Node newNode, java.lang.String namespaceURI, java.lang.String qualifiedName) throws org.w3c.dom.DOMException
Not yet implemented.- Throws:
org.w3c.dom.DOMException
-
getCharset
public java.nio.charset.Charset getCharset()
Returns the encoding.- Specified by:
getCharset
in classSgmlPage
- Returns:
- the encoding
-
getContentType
public java.lang.String getContentType()
Returns the content type of this page.- Specified by:
getContentType
in classSgmlPage
- Returns:
- the content type of this page
-
getImplementation
public org.w3c.dom.DOMImplementation getImplementation()
Not yet implemented.
-
createElement
public DomElement createElement(java.lang.String tagName)
- Parameters:
tagName
- the tag name, preferably in lowercase
-
createElementNS
public DomElement createElementNS(java.lang.String namespaceURI, java.lang.String qualifiedName)
-
createAttributeNS
public org.w3c.dom.Attr createAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName)
Not yet implemented.
-
createEntityReference
public org.w3c.dom.EntityReference createEntityReference(java.lang.String id)
Not yet implemented.
-
createProcessingInstruction
public org.w3c.dom.ProcessingInstruction createProcessingInstruction(java.lang.String namespaceURI, java.lang.String qualifiedName)
Not yet implemented.
-
getElementById
public DomElement getElementById(java.lang.String elementId)
-
getAnchorByName
public HtmlAnchor getAnchorByName(java.lang.String name) throws ElementNotFoundException
Returns theHtmlAnchor
with the specified name.- Parameters:
name
- the name to search by- Returns:
- the
HtmlAnchor
with the specified name - Throws:
ElementNotFoundException
- if the anchor could not be found
-
getAnchorByHref
public HtmlAnchor getAnchorByHref(java.lang.String href) throws ElementNotFoundException
Returns theHtmlAnchor
with the specified href.- Parameters:
href
- the string to search by- Returns:
- the HtmlAnchor
- Throws:
ElementNotFoundException
- if the anchor could not be found
-
getAnchors
public java.util.List<HtmlAnchor> getAnchors()
Returns a list of all anchors contained in this page.- Returns:
- the list of
HtmlAnchor
in this page
-
getAnchorByText
public HtmlAnchor getAnchorByText(java.lang.String text) throws ElementNotFoundException
Returns the first anchor with the specified text.- Parameters:
text
- the text to search for- Returns:
- the first anchor that was found
- Throws:
ElementNotFoundException
- if no anchors are found with the specified text
-
getFormByName
public HtmlForm getFormByName(java.lang.String name) throws ElementNotFoundException
Returns the first form that matches the specified name.- Parameters:
name
- the name to search for- Returns:
- the first form
- Throws:
ElementNotFoundException
- If no forms match the specified result.
-
getForms
public java.util.List<HtmlForm> getForms()
Returns a list of all the forms in this page.- Returns:
- all the forms in this page
-
getFullyQualifiedUrl
public java.net.URL getFullyQualifiedUrl(java.lang.String relativeUrl) throws java.net.MalformedURLException
Given a relative URL (ie/foo
), returns a fully-qualified URL based on the URL that was used to load this page.- Parameters:
relativeUrl
- the relative URL- Returns:
- the fully-qualified URL for the specified relative URL
- Throws:
java.net.MalformedURLException
- if an error occurred when creating a URL object
-
getResolvedTarget
public java.lang.String getResolvedTarget(java.lang.String elementTarget)
Given a target attribute value, resolve the target using a base target for the page.- Parameters:
elementTarget
- the target specified as an attribute of the element- Returns:
- the resolved target to use for the element
-
getTabbableElementIds
public java.util.List<java.lang.String> getTabbableElementIds()
Returns a list of ids (strings) that correspond to the tabbable elements in this page. Return them in the same order specified ingetTabbableElements()
- Returns:
- the list of id's
-
getTabbableElements
public java.util.List<HtmlElement> getTabbableElements()
Returns a list of all elements that are tabbable in the order that will be used for tabbing.The rules for determining tab order are as follows:
- Those elements that support the tabindex attribute and assign a positive value to it are navigated first. Navigation proceeds from the element with the lowest tabindex value to the element with the highest value. Values need not be sequential nor must they begin with any particular value. Elements that have identical tabindex values should be navigated in the order they appear in the character stream.
- Those elements that do not support the tabindex attribute or support it and assign it a value of "0" are navigated next. These elements are navigated in the order they appear in the character stream.
- Elements that are disabled do not participate in the tabbing order.
The following elements support the
tabindex
attribute: A, AREA, BUTTON, INPUT, OBJECT, SELECT, and TEXTAREA.- Returns:
- all the tabbable elements in proper tab order
-
createTabOrderComparator
private static java.util.Comparator<HtmlElement> createTabOrderComparator()
-
getHtmlElementByAccessKey
public HtmlElement getHtmlElementByAccessKey(char accessKey)
Returns the HTML element that is assigned to the specified access key. An access key (aka mnemonic key) is used for keyboard navigation of the page.Only the following HTML elements may have
accesskey
s defined: A, AREA, BUTTON, INPUT, LABEL, LEGEND, and TEXTAREA.- Parameters:
accessKey
- the key to look for- Returns:
- the HTML element that is assigned to the specified key or null if no elements can be found that match the specified key.
-
getHtmlElementsByAccessKey
public java.util.List<HtmlElement> getHtmlElementsByAccessKey(char accessKey)
Returns all the HTML elements that are assigned to the specified access key. An access key (aka mnemonic key) is used for keyboard navigation of the page.The HTML specification seems to indicate that one accesskey cannot be used for multiple elements however Internet Explorer does seem to support this. It's worth noting that Firefox does not support multiple elements with one access key so you are making your HTML browser specific if you rely on this feature.
Only the following HTML elements may have
accesskey
s defined: A, AREA, BUTTON, INPUT, LABEL, LEGEND, and TEXTAREA.- Parameters:
accessKey
- the key to look for- Returns:
- the elements that are assigned to the specified accesskey
-
executeJavaScript
public ScriptResult executeJavaScript(java.lang.String sourceCode)
Executes the specified JavaScript code within the page. The usage would be similar to what can be achieved to execute JavaScript in the current page by entering "javascript:...some JS code..." in the URL field of a native browser.
Note: the provided code won't be executed if JavaScript has been disabled on the WebClient (see
WebClient.isJavaScriptEnabled()
.- Parameters:
sourceCode
- the JavaScript code to execute- Returns:
- a ScriptResult which will contain both the current page (which may be different than the previous page) and a JavaScript result object
-
executeJavaScript
public ScriptResult executeJavaScript(java.lang.String sourceCode, java.lang.String sourceName, int startLine)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Execute the specified JavaScript if a JavaScript engine was successfully instantiated. If this JavaScript causes the current page to be reloaded (through location="" or form.submit()) then return the new page. Otherwise return the current page.
Please note: Although this method is public, it is not intended for general execution of JavaScript. Users of HtmlUnit should interact with the pages as a user would by clicking on buttons or links and having the JavaScript event handlers execute as needed..
- Parameters:
sourceCode
- the JavaScript code to executesourceName
- the name for this chunk of code (will be displayed in error messages)startLine
- the line at which the script source starts- Returns:
- a ScriptResult which will contain both the current page (which may be different than the previous page and a JavaScript result object.
-
loadExternalJavaScriptFile
HtmlPage.JavaScriptLoadResult loadExternalJavaScriptFile(java.lang.String srcAttribute, java.nio.charset.Charset scriptCharset) throws FailingHttpStatusCodeException
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.- Parameters:
srcAttribute
- the source attribute from the script tagscriptCharset
- the charset from the script tag- Returns:
- the result of loading the specified external JavaScript file
- Throws:
FailingHttpStatusCodeException
- if the request's status code indicates a request failure and theWebClient
was configured to throw exceptions on failing HTTP status codes
-
loadJavaScriptFromUrl
private java.lang.Object loadJavaScriptFromUrl(java.net.URL url, java.nio.charset.Charset scriptCharset) throws java.io.IOException, FailingHttpStatusCodeException
Loads JavaScript from the specified URL. This method may returnnull
if there is a problem loading the code from the specified URL.- Parameters:
url
- the URL of the scriptscriptCharset
- the charset from the script tag- Returns:
- the content of the file, or
null
if we ran into a compile error - Throws:
java.io.IOException
- if there is a problem downloading the JavaScript fileFailingHttpStatusCodeException
- if the request's status code indicates a request failure and theWebClient
was configured to throw exceptions on failing HTTP status codes
-
getTitleText
public java.lang.String getTitleText()
Returns the title of this page or an empty string if the title wasn't specified.- Returns:
- the title of this page or an empty string if the title wasn't specified
-
setTitleText
public void setTitleText(java.lang.String message)
Sets the text for the title of this page. If there is not a title element on this page, then one has to be generated.- Parameters:
message
- the new text
-
getFirstChildElement
private static DomElement getFirstChildElement(DomElement startElement, java.lang.Class<?> clazz)
Gets the first child of startElement that is an instance of the given class.- Parameters:
startElement
- the parent elementclazz
- the class to search for- Returns:
null
if no child found
-
getFirstChildElementRecursive
private DomElement getFirstChildElementRecursive(DomElement startElement, java.lang.Class<?> clazz)
Gets the first child of startElement or it's children that is an instance of the given class.- Parameters:
startElement
- the parent elementclazz
- the class to search for- Returns:
null
if no child found
-
getTitleElement
private HtmlTitle getTitleElement()
Gets the title element for this page. Returns null if one is not found.- Returns:
- the title element for this page or null if this is not one
-
executeEventHandlersIfNeeded
private boolean executeEventHandlersIfNeeded(java.lang.String eventType)
Looks for and executes any appropriate event handlers. Looks for body and frame tags.- Parameters:
eventType
- eitherEvent.TYPE_LOAD
,Event.TYPE_UNLOAD
, orEvent.TYPE_BEFORE_UNLOAD
- Returns:
true
if user acceptedonbeforeunload
(not relevant to other events)
-
isOnbeforeunloadAccepted
public boolean isOnbeforeunloadAccepted()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.- Returns:
- true if the OnbeforeunloadHandler has accepted to change the page
-
executeRefreshIfNeeded
private void executeRefreshIfNeeded() throws java.io.IOException
If a refresh has been specified either through a meta tag or an HTTP response header, then perform that refresh.- Throws:
java.io.IOException
- if an IO problem occurs
-
checkRecursion
private void checkRecursion()
-
getRefreshStringOrNull
private java.lang.String getRefreshStringOrNull()
Returns an auto-refresh string if specified. This will look in both the meta tags and inside the HTTP response headers.- Returns:
- the auto-refresh string
-
executeDeferredScriptsIfNeeded
private void executeDeferredScriptsIfNeeded()
Executes any deferred scripts, if necessary.
-
deregisterFramesIfNeeded
public void deregisterFramesIfNeeded()
Deregister frames that are no longer in use.
-
getFrames
public java.util.List<FrameWindow> getFrames()
Returns a list containing all the frames (from frame and iframe tags) in this page.- Returns:
- a list of
FrameWindow
-
getFrameByName
public FrameWindow getFrameByName(java.lang.String name) throws ElementNotFoundException
Returns the first frame contained in this page with the specified name.- Parameters:
name
- the name to search for- Returns:
- the first frame found
- Throws:
ElementNotFoundException
- If no frame exist in this page with the specified name.
-
pressAccessKey
public DomElement pressAccessKey(char accessKey) throws java.io.IOException
Simulate pressing an access key. This may change the focus, may click buttons and may invoke JavaScript.- Parameters:
accessKey
- the key that will be pressed- Returns:
- the element that has the focus after pressing this access key or null if no element has the focus.
- Throws:
java.io.IOException
- if an IO error occurs during the processing of this access key (this would only happen if the access key triggered a button which in turn caused a page load)
-
tabToNextElement
public HtmlElement tabToNextElement()
Move the focus to the next element in the tab order. To determine the specified tab order, refer togetTabbableElements()
- Returns:
- the element that has focus after calling this method
-
tabToPreviousElement
public HtmlElement tabToPreviousElement()
Move the focus to the previous element in the tab order. To determine the specified tab order, refer togetTabbableElements()
- Returns:
- the element that has focus after calling this method
-
getHtmlElementById
public <E extends HtmlElement> E getHtmlElementById(java.lang.String elementId) throws ElementNotFoundException
Returns the HTML element with the specified ID. If more than one element has this ID (not allowed by the HTML spec), then this method returns the first one.- Type Parameters:
E
- the element type- Parameters:
elementId
- the ID value to search for- Returns:
- the HTML element with the specified ID
- Throws:
ElementNotFoundException
- if no element was found matching the specified ID
-
getElementsById
public java.util.List<DomElement> getElementsById(java.lang.String elementId)
Returns the elements with the specified ID. If there are no elements with the specified ID, this method returns an empty list. Please note that the lists returned by this method are immutable.- Parameters:
elementId
- the ID value to search for- Returns:
- the elements with the specified name attribute
-
getElementByName
public <E extends DomElement> E getElementByName(java.lang.String name) throws ElementNotFoundException
Returns the element with the specified name. If more than one element has this name, then this method returns the first one.- Type Parameters:
E
- the element type- Parameters:
name
- the name value to search for- Returns:
- the element with the specified name
- Throws:
ElementNotFoundException
- if no element was found matching the specified name
-
getElementsByName
public java.util.List<DomElement> getElementsByName(java.lang.String name)
Returns the elements with the specified name attribute. If there are no elements with the specified name, this method returns an empty list. Please note that the lists returned by this method are immutable.- Parameters:
name
- the name value to search for- Returns:
- the elements with the specified name attribute
-
getElementsByIdAndOrName
public java.util.List<DomElement> getElementsByIdAndOrName(java.lang.String idAndOrName)
Returns the elements with the specified string for their name or ID. If there are no elements with the specified name or ID, this method returns an empty list.- Parameters:
idAndOrName
- the value to search for- Returns:
- the elements with the specified string for their name or ID
-
notifyNodeAdded
void notifyNodeAdded(DomNode node)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.- Parameters:
node
- the node that has just been added to the document
-
notifyNodeRemoved
void notifyNodeRemoved(DomNode node)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.- Parameters:
node
- the node that has just been removed from the tree
-
addMappedElement
void addMappedElement(DomElement element)
Adds an element to the ID and name maps, if necessary.- Parameters:
element
- the element to be added to the ID and name maps
-
addMappedElement
void addMappedElement(DomElement element, boolean recurse)
Adds an element to the ID and name maps, if necessary.- Parameters:
element
- the element to be added to the ID and name mapsrecurse
- indicates if children must be added too
-
addElement
private void addElement(java.util.Map<java.lang.String,java.util.SortedSet<DomElement>> map, DomElement element, java.lang.String attribute, boolean recurse)
-
removeMappedElement
void removeMappedElement(HtmlElement element)
Removes an element from the ID and name maps, if necessary.- Parameters:
element
- the element to be removed from the ID and name maps
-
removeMappedElement
void removeMappedElement(DomElement element, boolean recurse, boolean descendant)
Removes an element and optionally its children from the ID and name maps, if necessary.- Parameters:
element
- the element to be removed from the ID and name mapsrecurse
- indicates if children must be removed toodescendant
- indicates of the element was descendant of this HtmlPage, but now its parent might be null
-
removeElement
private void removeElement(java.util.Map<java.lang.String,java.util.SortedSet<DomElement>> map, DomElement element, java.lang.String attribute, boolean recurse)
-
isMappedElement
static boolean isMappedElement(org.w3c.dom.Document document, java.lang.String attributeName)
Indicates if the attribute name indicates that the owning element is mapped.- Parameters:
document
- the owning documentattributeName
- the name of the attribute to consider- Returns:
true
if the owning element should be mapped in its owning page
-
calculateBase
private void calculateBase()
-
loadFrames
void loadFrames() throws FailingHttpStatusCodeException
Loads the content of the contained frames. This is done after the page is completely loaded, to allow script contained in the frames to reference elements from the page located after the closing </frame> tag.- Throws:
FailingHttpStatusCodeException
- if the server returns a failing status code AND the propertyWebClientOptions.setThrowExceptionOnFailingStatusCode(boolean)
is set totrue
-
toString
public java.lang.String toString()
Gives a basic representation for debugging purposes.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a basic representation
-
getMetaTags
protected java.util.List<HtmlMeta> getMetaTags(java.lang.String httpEquiv)
Gets the meta tag for a givenhttp-equiv
value.- Parameters:
httpEquiv
- thehttp-equiv
value- Returns:
- a list of
HtmlMeta
-
clone
protected HtmlPage clone()
Creates a clone of this instance, and clears cached state to be not shared with the original.
-
cloneNode
public HtmlPage cloneNode(boolean deep)
-
addHtmlAttributeChangeListener
public void addHtmlAttributeChangeListener(HtmlAttributeChangeListener listener)
Adds an HtmlAttributeChangeListener to the listener list. The listener is registered for all attributes of all HtmlElements contained in this page.- Parameters:
listener
- the attribute change listener to be added- See Also:
removeHtmlAttributeChangeListener(HtmlAttributeChangeListener)
-
removeHtmlAttributeChangeListener
public void removeHtmlAttributeChangeListener(HtmlAttributeChangeListener listener)
Removes an HtmlAttributeChangeListener from the listener list. This method should be used to remove HtmlAttributeChangeListener that were registered for all attributes of all HtmlElements contained in this page.- Parameters:
listener
- the attribute change listener to be removed- See Also:
addHtmlAttributeChangeListener(HtmlAttributeChangeListener)
-
fireHtmlAttributeAdded
void fireHtmlAttributeAdded(HtmlAttributeChangeEvent event)
Notifies all registered listeners for the given event to add an attribute.- Parameters:
event
- the event to fire
-
fireHtmlAttributeReplaced
void fireHtmlAttributeReplaced(HtmlAttributeChangeEvent event)
Notifies all registered listeners for the given event to replace an attribute.- Parameters:
event
- the event to fire
-
fireHtmlAttributeRemoved
void fireHtmlAttributeRemoved(HtmlAttributeChangeEvent event)
Notifies all registered listeners for the given event to remove an attribute.- Parameters:
event
- the event to fire
-
safeGetAttributeListeners
private java.util.List<HtmlAttributeChangeListener> safeGetAttributeListeners()
-
checkChildHierarchy
protected void checkChildHierarchy(org.w3c.dom.Node newChild) throws org.w3c.dom.DOMException
Check for insertion errors for a new child node. This is overridden by derived classes to enforce which types of children are allowed.- Overrides:
checkChildHierarchy
in classDomNode
- Parameters:
newChild
- the new child node that is being inserted below this node- Throws:
org.w3c.dom.DOMException
- HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to insert is one of this node's ancestors or this node itself, or if this node is of type Document and the DOM application attempts to insert a second DocumentType or Element node. WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
-
isBeingParsed
public boolean isBeingParsed()
Returnstrue
if an HTML parser is operating on this page, adding content to it.- Returns:
true
if an HTML parser is operating on this page, adding content to it
-
registerParsingStart
public void registerParsingStart()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has started parsing some content for this page.
-
registerParsingEnd
public void registerParsingEnd()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has finished parsing some content for this page.
-
isParsingHtmlSnippet
public boolean isParsingHtmlSnippet()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returnstrue
if an HTML parser is parsing a non-inline HTML snippet to add content to this page. Non-inline content is content that is parsed for the page, but not in the same stream as the page itself -- basically anything other thandocument.write()
ordocument.writeln()
:innerHTML
,outerHTML
,document.createElement()
, etc.- Returns:
true
if an HTML parser is parsing a non-inline HTML snippet to add content to this page
-
registerSnippetParsingStart
public void registerSnippetParsingStart()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has started parsing a non-inline HTML snippet.
-
registerSnippetParsingEnd
public void registerSnippetParsingEnd()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has finished parsing a non-inline HTML snippet.
-
isParsingInlineHtmlSnippet
public boolean isParsingInlineHtmlSnippet()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returnstrue
if an HTML parser is parsing an inline HTML snippet to add content to this page. Inline content is content inserted into the parser stream dynamically while the page is being parsed (i.e.document.write()
ordocument.writeln()
).- Returns:
true
if an HTML parser is parsing an inline HTML snippet to add content to this page
-
registerInlineSnippetParsingStart
public void registerInlineSnippetParsingStart()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has started parsing an inline HTML snippet.
-
registerInlineSnippetParsingEnd
public void registerInlineSnippetParsingEnd()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Called by the HTML parser to let the page know that it has finished parsing an inline HTML snippet.
-
refresh
public Page refresh() throws java.io.IOException
Refreshes the page by sending the same parameters as previously sent to get this page.- Returns:
- the newly loaded page.
- Throws:
java.io.IOException
- if an IO problem occurs
-
writeInParsedStream
public void writeInParsedStream(java.lang.String string)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Parses the given string as would it belong to the content being parsed at the current parsing position
- Parameters:
string
- the HTML code to write in place
-
setDOMBuilder
public void setDOMBuilder(HTMLParserDOMBuilder htmlUnitDOMBuilder)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Sets the builder to allow page to send content from document.write(ln) calls.- Parameters:
htmlUnitDOMBuilder
- the builder
-
getDOMBuilder
public HTMLParserDOMBuilder getDOMBuilder()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returns the current builder.- Returns:
- the current builder
-
getNamespaces
public java.util.Map<java.lang.String,java.lang.String> getNamespaces()
Returns all namespaces defined in the root element of this page.
The default namespace has a key of an empty string.
- Returns:
- all namespaces defined in the root element of this page
-
setDocumentType
public void setDocumentType(org.w3c.dom.DocumentType type)
Sets the document type.- Overrides:
setDocumentType
in classSgmlPage
- Parameters:
type
- the document type
-
save
public void save(java.io.File file) throws java.io.IOException
Saves the current page, with all images, to the specified location. The default behavior removes all script elements.- Parameters:
file
- file to write this page into- Throws:
java.io.IOException
- If an error occurs
-
isQuirksMode
public boolean isQuirksMode()
Returns whether the current page mode is inquirks mode
or instandards mode
.- Returns:
- true for
quirks mode
, false forstandards mode
-
isAttachedToPage
public boolean isAttachedToPage()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Indicates if this node is currently attached to the page.- Overrides:
isAttachedToPage
in classDomNode
- Returns:
true
if the page is one ancestor of the node.
-
isHtmlPage
public boolean isHtmlPage()
Returns true if this page is an HtmlPage.- Specified by:
isHtmlPage
in interfacePage
- Overrides:
isHtmlPage
in classSgmlPage
- Returns:
- true or false
-
getBaseURL
public java.net.URL getBaseURL()
The base URL used to resolve relative URLs.- Returns:
- the base URL
-
addAutoCloseable
public void addAutoCloseable(java.lang.AutoCloseable autoCloseable)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Adds anAutoCloseable
, which would be closed during thecleanUp()
.- Parameters:
autoCloseable
- the autoclosable
-
handles
public boolean handles(Event event)
Indicates if the provided event can be applied to this node. Overwrite this.
-
setElementFromPointHandler
public void setElementFromPointHandler(ElementFromPointHandler elementFromPointHandler)
Sets theElementFromPointHandler
.- Parameters:
elementFromPointHandler
- the handler
-
getElementFromPoint
public HtmlElement getElementFromPoint(int x, int y)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returns the element for the specified x coordinate and the specified y coordinate.- Parameters:
x
- the x offset, in pixelsy
- the y offset, in pixels- Returns:
- the element for the specified x coordinate and the specified y coordinate
-
setFocusedElement
public boolean setFocusedElement(DomElement newElement)
Moves the focus to the specified element. This will trigger any relevant JavaScript event handlers.- Parameters:
newElement
- the element that will receive the focus, usenull
to remove focus from any element- Returns:
- true if the specified element now has the focus
- See Also:
getFocusedElement()
-
setFocusedElement
public boolean setFocusedElement(DomElement newElement, boolean windowActivated)
Moves the focus to the specified element. This will trigger any relevant JavaScript event handlers.- Parameters:
newElement
- the element that will receive the focus, usenull
to remove focus from any elementwindowActivated
- - whether the enclosing window got focus resulting in specified element getting focus- Returns:
- true if the specified element now has the focus
- See Also:
getFocusedElement()
-
getFocusedElement
public DomElement getFocusedElement()
Returns the element with the focus or null if no element has the focus.- Returns:
- the element with focus or null
- See Also:
setFocusedElement(DomElement)
-
setElementWithFocus
public void setElementWithFocus(DomElement elementWithFocus)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Sets the element with focus.- Parameters:
elementWithFocus
- the element with focus
-
getActiveElement
public HtmlElement getActiveElement()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
- Returns:
- the element with focus or the body
-
getSelectionRanges
public java.util.List<SimpleRange> getSelectionRanges()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Returns the page's current selection ranges.
- Returns:
- the page's current selection ranges
-
setSelectionRange
public void setSelectionRange(SimpleRange selectionRange)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Makes the specified selection range the *only* selection range on this page.
- Parameters:
selectionRange
- the selection range
-
executeJavaScriptFunction
public ScriptResult executeJavaScriptFunction(java.lang.Object function, java.lang.Object thisObject, java.lang.Object[] args, DomNode htmlElementScope)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Execute a Function in the given context.- Parameters:
function
- the JavaScript Function to callthisObject
- the "this" object to be used during invocationargs
- the arguments to pass into the callhtmlElementScope
- the HTML element for which this script is being executed This element will be the context during the JavaScript execution. If null, the context will default to the page.- Returns:
- a ScriptResult which will contain both the current page (which may be different than the previous page and a JavaScript result object.
-
executeJavaScriptFunction
private ScriptResult executeJavaScriptFunction(org.htmlunit.corejs.javascript.Function function, org.htmlunit.corejs.javascript.Scriptable thisObject, java.lang.Object[] args, DomNode htmlElementScope)
-
writeObject
private void writeObject(java.io.ObjectOutputStream oos) throws java.io.IOException
- Throws:
java.io.IOException
-
readObject
private void readObject(java.io.ObjectInputStream ois) throws java.lang.ClassNotFoundException, java.io.IOException
- Throws:
java.lang.ClassNotFoundException
java.io.IOException
-
setNodeValue
public void setNodeValue(java.lang.String value)
-
setPrefix
public void setPrefix(java.lang.String prefix)
-
clearComputedStyles
public void clearComputedStyles()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Clears the computed styles.- Overrides:
clearComputedStyles
in classSgmlPage
-
clearComputedStyles
public void clearComputedStyles(DomElement element)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Clears the computed styles for a specificElement
.- Overrides:
clearComputedStyles
in classSgmlPage
- Parameters:
element
- the element to clear its cache
-
clearComputedStylesUpToRoot
public void clearComputedStylesUpToRoot(DomElement element)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Clears the computed styles for a specificElement
and all parent elements.- Overrides:
clearComputedStylesUpToRoot
in classSgmlPage
- Parameters:
element
- the element to clear its cache
-
getStyleFromCache
public ComputedCssStyleDeclaration getStyleFromCache(DomElement element, java.lang.String normalizedPseudo)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.- Parameters:
element
- the element to clear its cachenormalizedPseudo
- the pseudo attribute- Returns:
- the cached CSS2Properties object or null
-
putStyleIntoCache
public void putStyleIntoCache(DomElement element, java.lang.String normalizedPseudo, ComputedCssStyleDeclaration style)
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Caches a CSS2Properties object.- Parameters:
element
- the element to clear its cachenormalizedPseudo
- the pseudo attributestyle
- the CSS2Properties to cache
-
getStyleSheets
public java.util.List<CssStyleSheet> getStyleSheets()
INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.- Returns:
- a list of all styles from this page (<style> and <link rel=stylesheet>). This returns an empty list if css support is disabled in the web client options.
-
getCssPropertiesCache
private HtmlPage.ComputedStylesCache getCssPropertiesCache()
- Returns:
- the CSSPropertiesCache for this page
-
-