com.gargoylesoftware.htmlunit.html
Class HtmlPage

java.lang.Object
  extended by com.gargoylesoftware.htmlunit.html.DomNode
      extended by com.gargoylesoftware.htmlunit.SgmlPage
          extended by com.gargoylesoftware.htmlunit.html.HtmlPage
All Implemented Interfaces:
Page, Serializable, Cloneable, Document, 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 methods DomNode.getByXPath(String) and DomNode.getFirstByXPath(String) for fine grained user specific access to child nodes.

Child elements allowing user interaction provide methods for this purpose like HtmlElement.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 is text/html (or one of its variations).

Example:

final HtmlPage page = webClient.getPage("http://mywebsite/some/page.html");

Version:
$Revision: 5941 $
Author:
Mike Bowler, Alex Nikiforoff, Noboru Sinohara, David K. Taylor, Andreas Hangler, Christian Sell, Chris Erskine, Marc Guillemot, Ahmed Ashour, Daniel Gredler, Dmitri Zoubkov, Sudhan Moghe, Ethan Glasser-Camp, Tom Anderson
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.gargoylesoftware.htmlunit.html.DomNode
DomNode.ChildIterator, DomNode.DescendantElementsIterator<T extends DomNode>
 
Field Summary
 
Fields inherited from class com.gargoylesoftware.htmlunit.html.DomNode
AS_TEXT_BLANK, AS_TEXT_BLOCK_SEPARATOR, AS_TEXT_NEW_LINE, AS_TEXT_TAB, 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
HtmlPage(URL originatingUrl, WebResponse webResponse, WebWindow webWindow)
          Creates an instance of HtmlPage.
 
Method Summary
 void addHtmlAttributeChangeListener(HtmlAttributeChangeListener listener)
          Adds an HtmlAttributeChangeListener to the listener list.
 Node adoptNode(Node source)
           Not yet implemented.
protected  void checkChildHierarchy(Node newChild)
          Check for insertion errors for a new child node.
 void cleanUp()
          Clean up this page.
protected  HtmlPage clone()
          Creates a clone of this instance, and clears cached state to be not shared with the original.
 HtmlPage cloneNode(boolean deep)
           Override cloneNode to add cloned elements to the clone, not to the original.
 Attr createAttributeNS(String namespaceURI, String qualifiedName)
           Not yet implemented.
 CDATASection createCDATASection(String data)
          
 Comment createComment(String data)
          
 DocumentFragment createDocumentFragment()
          
 HtmlElement createElement(String tagName)
          Creates an element, the type of which depends on the specified tag name.
 HtmlElement createElementNS(String namespaceURI, String qualifiedName)
          Create a new Element with the given namespace and qualified name.
 EntityReference createEntityReference(String id)
           Not yet implemented.
 ProcessingInstruction createProcessingInstruction(String namespaceURI, String qualifiedName)
           Not yet implemented.
 Text createTextNode(String data)
          
 void deregisterFramesIfNeeded()
          Deregister frames that are no longer in use.
 ScriptResult executeJavaScript(String sourceCode)
          Executes the specified JavaScript code within the page.
 ScriptResult executeJavaScriptFunctionIfPossible(net.sourceforge.htmlunit.corejs.javascript.Function function, net.sourceforge.htmlunit.corejs.javascript.Scriptable thisObject, Object[] args, DomNode htmlElementScope)
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
Execute a Function in the given context.
 ScriptResult executeJavaScriptIfPossible(String sourceCode, String sourceName, int startLine)
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
 HtmlAnchor getAnchorByHref(String href)
          Returns the HtmlAnchor with the specified href.
 HtmlAnchor getAnchorByName(String name)
          Returns the HtmlAnchor with the specified name.
 HtmlAnchor getAnchorByText(String text)
          Returns the first anchor with the specified text.
 List<HtmlAnchor> getAnchors()
          Returns a list of all anchors contained in this page.
 HtmlElement getBody()
          Returns the body element (or frameset element), or null if it does not yet exist.
 HtmlElement getDocumentElement()
          Returns the document element.
 String getDocumentURI()
           Not yet implemented.
 DOMConfiguration getDomConfig()
           Not yet implemented.
 HtmlElement getElementByAccessKey(char accessKey)
          Returns the HTML element that is assigned to the specified access key.
 HtmlElement getElementById(String elementId)
          
<E extends HtmlElement>
E
getElementByName(String name)
          Returns the HTML element with the specified name.
 List<HtmlElement> getElementsByAccessKey(char accessKey)
          Returns all the HTML elements that are assigned to the specified access key.
 List<HtmlElement> getElementsByIdAndOrName(String idAndOrName)
          Returns the HTML elements with the specified string for their name or ID.
 List<HtmlElement> getElementsByName(String name)
          Returns the HTML elements with the specified name attribute.
 DomNodeList<HtmlElement> getElementsByTagName(String tagName)
          
 DomNodeList<HtmlElement> getElementsByTagNameNS(String namespaceURI, String localName)
           Not yet implemented.
 HtmlElement getFocusedElement()
          Returns the element with the focus or null if no element has the focus.
 HtmlForm getFormByName(String name)
          Returns the first form that matches the specified name.
 List<HtmlForm> getForms()
          Returns a list of all the forms in this page.
 FrameWindow getFrameByName(String name)
          Returns the first frame contained in this page with the specified name.
 List<FrameWindow> getFrames()
          Returns a list containing all the frames (from frame and iframe tags) in this page.
 URL getFullyQualifiedUrl(String relativeUrl)
          Given a relative URL (ie /foo), returns a fully-qualified URL based on the URL that was used to load this page.
<E extends HtmlElement>
E
getHtmlElementById(String id)
          Returns the HTML element with the specified ID.
<E extends HtmlElement>
E
getHtmlElementById(String id, boolean caseSensitive)
          Returns the HTML element with the specified ID.
 DOMImplementation getImplementation()
           Not yet implemented.
 String getInputEncoding()
           Not yet implemented.
protected  List<HtmlMeta> getMetaTags(String httpEquiv)
          Gets the meta tag for a given http-equiv value.
 Map<String,String> getNamespaces()
          Returns all namespaces defined in the root element of this page.
 Document getOwnerDocument()
          
 HtmlPage getPage()
          Returns the page that contains this node.
 String getPageEncoding()
          Returns the page encoding.
 String getResolvedTarget(String elementTarget)
          Given a target attribute value, resolve the target using a base target for the page.
 List<org.w3c.dom.ranges.Range> getSelectionRanges()
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
 boolean getStrictErrorChecking()
           Not yet implemented.
 List<String> getTabbableElementIds()
          Returns a list of ids (strings) that correspond to the tabbable elements in this page.
 List<HtmlElement> getTabbableElements()
          Returns a list of all elements that are tabbable in the order that will be used for tabbing.
 String getTitleText()
          Returns the title of this page or an empty string if the title wasn't specified.
 String getXmlEncoding()
           Not yet implemented.
 boolean getXmlStandalone()
           Not yet implemented.
 String getXmlVersion()
           Not yet implemented.
 boolean hasCaseSensitiveTagNames()
          Returns true if this page has case-sensitive tag names, false otherwise.
 Node importNode(Node importedNode, boolean deep)
           Not yet implemented.
 void initialize()
          Initialize this page.
 boolean isBeingParsed()
          Returns true if an HTML parser is operating on this page, adding content to it.
 boolean isOnbeforeunloadAccepted()
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
 boolean isQuirksMode()
          Returns whether the current page mode is in quirks mode or in standards mode.
 HtmlElement pressAccessKey(char accessKey)
          Simulate pressing an access key.
 DomNode querySelector(String selectors)
          Returns the first element within the document that matches the specified group of selectors.
 DomNodeList<DomNode> querySelectorAll(String selectors)
          Retrieves all element nodes from descendants of the starting element node that match any selector within the supplied selector strings.
 Page refresh()
          Refreshes the page by sending the same parameters as previously sent to get this page.
 void removeHtmlAttributeChangeListener(HtmlAttributeChangeListener listener)
          Removes an HtmlAttributeChangeListener from the listener list.
 Node renameNode(Node newNode, String namespaceURI, String qualifiedName)
           Not yet implemented.
 void save(File file)
          Saves the current page, with all images, to the specified location.
protected  void setDocumentType(DomDocumentType type)
          Sets the document type.
 void setDocumentURI(String documentURI)
           Not yet implemented.
 boolean setFocusedElement(HtmlElement newElement)
          Moves the focus to the specified element.
 boolean setFocusedElement(HtmlElement newElement, boolean windowActivated)
          Moves the focus to the specified element.
 void setSelectionRange(org.w3c.dom.ranges.Range selectionRange)
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
 void setStrictErrorChecking(boolean strictErrorChecking)
           Not yet implemented.
 void setTitleText(String message)
          Sets the text for the title of this page.
 void setXmlStandalone(boolean xmlStandalone)
           Not yet implemented.
 void setXmlVersion(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.
 String toString()
          Gives a basic representation for debugging purposes.
 void writeInParsedStream(String string)
          INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
 
Methods inherited from class com.gargoylesoftware.htmlunit.SgmlPage
asXml, createAttribute, createDomDocumentFragment, getCanonicalXPath, getDoctype, getEnclosingWindow, getNodeName, getNodeType, getUrl, getWebClient, getWebResponse, normalizeDocument, setEnclosingWindow
 
Methods inherited from class com.gargoylesoftware.htmlunit.html.DomNode
addDomChangeListener, appendChild, asText, compareDocumentPosition, fireNodeAdded, fireNodeDeleted, getAllHtmlChildElements, getAncestors, getAttributes, getBaseURI, getByXPath, getChildNodes, getChildren, getDescendants, getEndColumnNumber, getEndLineNumber, getFeature, getFirstByXPath, getFirstChild, getHtmlElementDescendants, getIndex, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousSibling, getReadyState, getScriptObject, getStartColumnNumber, getStartLineNumber, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, insertBefore, isAncestorOf, isAncestorOfAny, isBlock, isDefaultNamespace, isDisplayed, isEqualNode, isSameNode, isSupported, isTrimmedText, lookupNamespaceURI, lookupPrefix, mayBeDisplayed, normalize, notifyIncorrectness, onAddedToPage, onAllChildrenAddedToPage, printChildrenAsXml, printXml, remove, removeAllChildren, removeChild, removeDomChangeListener, replace, replaceChild, setNextSibling, setNodeValue, setParentNode, setPrefix, setPreviousSibling, setReadyState, setScriptObject, 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, setNodeValue, setPrefix, setTextContent, setUserData
 

Constructor Detail

HtmlPage

public HtmlPage(URL originatingUrl,
                WebResponse webResponse,
                WebWindow webWindow)
Creates an instance of HtmlPage. An HtmlPage instance is normally retrieved with WebClient.getPage(String).

Parameters:
originatingUrl - the URL that was used to load this page
webResponse - the web response that was used to create this page
webWindow - the window that this page is being loaded into
Method Detail

getPage

public HtmlPage getPage()
Returns the page that contains this node.

Overrides:
getPage in class SgmlPage
Returns:
the page that contains this node

hasCaseSensitiveTagNames

public boolean hasCaseSensitiveTagNames()
Returns true 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 class SgmlPage
Returns:
true if this page has case-sensitive tag names, false otherwise

initialize

public void initialize()
                throws IOException,
                       FailingHttpStatusCodeException
Initialize this page.

Specified by:
initialize in interface Page
Overrides:
initialize in class SgmlPage
Throws:
IOException - if an IO problem occurs
FailingHttpStatusCodeException - if the server returns a failing status code AND the property WebClient.setThrowExceptionOnFailingStatusCode(boolean) is set to true.

cleanUp

public void cleanUp()
Clean up this page.

Specified by:
cleanUp in interface Page
Overrides:
cleanUp in class SgmlPage

getDocumentElement

public HtmlElement getDocumentElement()
Returns the document element.

Specified by:
getDocumentElement in interface Document
Overrides:
getDocumentElement in class SgmlPage
Returns:
the document element

getBody

public HtmlElement getBody()
Returns the body element (or frameset element), or null if it does not yet exist.

Returns:
the body element (or frameset element), or null if it does not yet exist

getOwnerDocument

public Document getOwnerDocument()

Specified by:
getOwnerDocument in interface Node
Overrides:
getOwnerDocument in class DomNode

importNode

public Node importNode(Node importedNode,
                       boolean deep)
Not yet implemented.


getElementsByTagName

public DomNodeList<HtmlElement> getElementsByTagName(String tagName)


getElementsByTagNameNS

public DomNodeList<HtmlElement> getElementsByTagNameNS(String namespaceURI,
                                                       String localName)
Not yet implemented.


getElementById

public HtmlElement getElementById(String elementId)


getInputEncoding

public String getInputEncoding()
Not yet implemented.


getXmlEncoding

public String getXmlEncoding()
Not yet implemented.


getXmlStandalone

public boolean getXmlStandalone()
Not yet implemented.


setXmlStandalone

public void setXmlStandalone(boolean xmlStandalone)
                      throws DOMException
Not yet implemented.

Throws:
DOMException

getXmlVersion

public String getXmlVersion()
Not yet implemented.


setXmlVersion

public void setXmlVersion(String xmlVersion)
                   throws DOMException
Not yet implemented.

Throws:
DOMException

getStrictErrorChecking

public boolean getStrictErrorChecking()
Not yet implemented.


setStrictErrorChecking

public void setStrictErrorChecking(boolean strictErrorChecking)
Not yet implemented.


getDocumentURI

public String getDocumentURI()
Not yet implemented.


setDocumentURI

public void setDocumentURI(String documentURI)
Not yet implemented.


adoptNode

public Node adoptNode(Node source)
               throws DOMException
Not yet implemented.

Throws:
DOMException

getDomConfig

public DOMConfiguration getDomConfig()
Not yet implemented.


renameNode

public Node renameNode(Node newNode,
                       String namespaceURI,
                       String qualifiedName)
                throws DOMException
Not yet implemented.

Throws:
DOMException

getPageEncoding

public String getPageEncoding()
Returns the page encoding.

Specified by:
getPageEncoding in class SgmlPage
Returns:
the page encoding

createElement

public HtmlElement createElement(String tagName)
Creates an element, the type of which depends on the specified tag name.

Specified by:
createElement in interface Document
Specified by:
createElement in class SgmlPage
Parameters:
tagName - the tag name, preferably in lowercase
Returns:
an element, the type of which depends on the specified tag name

createElementNS

public HtmlElement createElementNS(String namespaceURI,
                                   String qualifiedName)
Create a new Element with the given namespace and qualified name.

Specified by:
createElementNS in interface Document
Specified by:
createElementNS in class SgmlPage
Parameters:
namespaceURI - the URI that identifies an XML namespace
qualifiedName - the qualified name of the element type to instantiate
Returns:
the new element

createAttributeNS

public Attr createAttributeNS(String namespaceURI,
                              String qualifiedName)
Not yet implemented.


createComment

public Comment createComment(String data)


createTextNode

public Text createTextNode(String data)


createCDATASection

public CDATASection createCDATASection(String data)


createDocumentFragment

public DocumentFragment createDocumentFragment()


getImplementation

public DOMImplementation getImplementation()
Not yet implemented.


createEntityReference

public EntityReference createEntityReference(String id)
Not yet implemented.


createProcessingInstruction

public ProcessingInstruction createProcessingInstruction(String namespaceURI,
                                                         String qualifiedName)
Not yet implemented.


getAnchorByName

public HtmlAnchor getAnchorByName(String name)
                           throws ElementNotFoundException
Returns the HtmlAnchor 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(String href)
                           throws ElementNotFoundException
Returns the HtmlAnchor 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 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(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(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 List<HtmlForm> getForms()
Returns a list of all the forms in this page.

Returns:
all the forms in this page

getFullyQualifiedUrl

public URL getFullyQualifiedUrl(String relativeUrl)
                         throws 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:
MalformedURLException - if an error occurred when creating a URL object

getResolvedTarget

public String getResolvedTarget(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 List<String> getTabbableElementIds()
Returns a list of ids (strings) that correspond to the tabbable elements in this page. Return them in the same order specified in getTabbableElements()

Returns:
the list of id's

getTabbableElements

public 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:

  1. 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.
  2. 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.
  3. Elements that are disabled do not participate in the tabbing order.
Additionally, the value of tabindex must be within 0 and 32767. Any values outside this range will be ignored.

The following elements support the tabindex attribute: A, AREA, BUTTON, INPUT, OBJECT, SELECT, and TEXTAREA.

Returns:
all the tabbable elements in proper tab order

getElementByAccessKey

public HtmlElement getElementByAccessKey(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 accesskeys 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.

getElementsByAccessKey

public List<HtmlElement> getElementsByAccessKey(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 Mozilla 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 accesskeys 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(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

executeJavaScriptIfPossible

public ScriptResult executeJavaScriptIfPossible(String sourceCode,
                                                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 execute
sourceName - 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.

executeJavaScriptFunctionIfPossible

public ScriptResult executeJavaScriptFunctionIfPossible(net.sourceforge.htmlunit.corejs.javascript.Function function,
                                                        net.sourceforge.htmlunit.corejs.javascript.Scriptable thisObject,
                                                        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 call
thisObject - the "this" object to be used during invocation
args - the arguments to pass into the call
htmlElementScope - 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.

getTitleText

public 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(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

deregisterFramesIfNeeded

public void deregisterFramesIfNeeded()
Deregister frames that are no longer in use.


getFrames

public 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(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 HtmlElement pressAccessKey(char accessKey)
                           throws 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:
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 to getTabbableElements()

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 to getTabbableElements()

Returns:
the element that has focus after calling this method

getHtmlElementById

public <E extends HtmlElement> E getHtmlElementById(String id)
                                         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:
id - 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

getHtmlElementById

public <E extends HtmlElement> E getHtmlElementById(String id,
                                                    boolean caseSensitive)
                                         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:
id - the ID value to search for
caseSensitive - whether to consider case sensitivity or not
Returns:
the HTML element with the specified ID
Throws:
ElementNotFoundException - if no element was found matching the specified ID

getElementByName

public <E extends HtmlElement> E getElementByName(String name)
                                       throws ElementNotFoundException
Returns the HTML 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 HTML element with the specified name
Throws:
ElementNotFoundException - if no element was found matching the specified name

getElementsByName

public List<HtmlElement> getElementsByName(String name)
Returns the HTML 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 HTML elements with the specified name attribute

getElementsByIdAndOrName

public List<HtmlElement> getElementsByIdAndOrName(String idAndOrName)
Returns the HTML 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 HTML elements with the specified string for their name or ID

toString

public String toString()
Gives a basic representation for debugging purposes.

Overrides:
toString in class Object
Returns:
a basic representation

setFocusedElement

public boolean setFocusedElement(HtmlElement 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, use null to remove focus from any element
Returns:
true if the specified element now has the focus
See Also:
getFocusedElement(), tabToNextElement(), tabToPreviousElement(), pressAccessKey(char), WebAssert.assertAllTabIndexAttributesSet(HtmlPage)

setFocusedElement

public boolean setFocusedElement(HtmlElement 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, use null to remove focus from any element
windowActivated - - 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(), tabToNextElement(), tabToPreviousElement(), pressAccessKey(char), WebAssert.assertAllTabIndexAttributesSet(HtmlPage)

getFocusedElement

public HtmlElement 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(HtmlElement)

getMetaTags

protected List<HtmlMeta> getMetaTags(String httpEquiv)
Gets the meta tag for a given http-equiv value.

Parameters:
httpEquiv - the http-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.

Overrides:
clone in class SgmlPage
Returns:
a clone of this instance

cloneNode

public HtmlPage cloneNode(boolean deep)
Override cloneNode to add cloned elements to the clone, not to the original.

Specified by:
cloneNode in interface Node
Overrides:
cloneNode in class DomNode

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)

checkChildHierarchy

protected void checkChildHierarchy(Node newChild)
                            throws 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 class DomNode
Parameters:
newChild - the new child node that is being inserted below this node
Throws:
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.

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

isBeingParsed

public boolean isBeingParsed()
Returns true 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

refresh

public Page refresh()
             throws IOException
Refreshes the page by sending the same parameters as previously sent to get this page.

Returns:
the newly loaded page.
Throws:
IOException - if an IO problem occurs

writeInParsedStream

public void writeInParsedStream(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

getSelectionRanges

public List<org.w3c.dom.ranges.Range> getSelectionRanges()

INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.

Returns the page's current selection ranges. Note that some browsers, like IE, only allow a single selection at a time.

Returns:
the page's current selection ranges

setSelectionRange

public void setSelectionRange(org.w3c.dom.ranges.Range 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

getNamespaces

public Map<String,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

protected void setDocumentType(DomDocumentType type)
Sets the document type.

Overrides:
setDocumentType in class SgmlPage
Parameters:
type - the document type

save

public void save(File file)
          throws 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:
IOException - If an error occurs

isQuirksMode

public boolean isQuirksMode()
Returns whether the current page mode is in quirks mode or in standards mode.

Returns:
true for quirks mode, false for standards mode

querySelectorAll

public DomNodeList<DomNode> querySelectorAll(String selectors)
Retrieves all element nodes from descendants of the starting element node that match any selector within the supplied selector strings.

Parameters:
selectors - one or more CSS selectors separated by commas
Returns:
list of all found nodes

querySelector

public DomNode querySelector(String selectors)
Returns the first element within the document that matches the specified group of selectors.

Parameters:
selectors - one or more CSS selectors separated by commas
Returns:
null if no matches are found; otherwise, it returns the first matching element


Copyright © 2002-2010 Gargoyle Software Inc.. All Rights Reserved.