diff options
author | xue <> | 2006-06-02 18:27:02 +0000 |
---|---|---|
committer | xue <> | 2006-06-02 18:27:02 +0000 |
commit | 0f3a577bed4d828472469675e90fcab032e33f44 (patch) | |
tree | 3ca817247b8006563900d5fb8995d6a6f0627a2b /tests/FunctionalTests/selenium/core/scripts/user-extensions.js.sample | |
parent | 067ab51fbd9b2f18f63fc80895476e5b0e2f9bfb (diff) |
merge from 3.0 branch till 1133.
Diffstat (limited to 'tests/FunctionalTests/selenium/core/scripts/user-extensions.js.sample')
-rwxr-xr-x | tests/FunctionalTests/selenium/core/scripts/user-extensions.js.sample | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/FunctionalTests/selenium/core/scripts/user-extensions.js.sample b/tests/FunctionalTests/selenium/core/scripts/user-extensions.js.sample new file mode 100755 index 00000000..0f0ca840 --- /dev/null +++ b/tests/FunctionalTests/selenium/core/scripts/user-extensions.js.sample @@ -0,0 +1,75 @@ +/* + * By default, Selenium looks for a file called "user-extensions.js", and loads and javascript + * code found in that file. This file is a sample of what that file could look like. + * + * user-extensions.js provides a convenient location for adding extensions to Selenium, like + * new actions, checks and locator-strategies. + * By default, this file does not exist. Users can create this file and place their extension code + * in this common location, removing the need to modify the Selenium sources, and hopefully assisting + * with the upgrade process. + * + * You can find contributed extensions at http://wiki.openqa.org/display/SEL/Contributed%20User-Extensions + */ + +// The following examples try to give an indication of how Selenium can be extended with javascript. + +// All do* methods on the Selenium prototype are added as actions. +// Eg add a typeRepeated action to Selenium, which types the text twice into a text box. +// The typeTwiceAndWait command will be available automatically +Selenium.prototype.doTypeRepeated = function(locator, text) { + // All locator-strategies are automatically handled by "findElement" + var element = this.page().findElement(locator); + + // Create the text to type + var valueToType = text + text; + + // Replace the element text with the new text + this.page().replaceText(element, valueToType); +}; + +// All assert* methods on the Selenium prototype are added as checks. +// Eg add a assertValueRepeated check, that makes sure that the element value +// consists of the supplied text repeated. +// The verify version will be available automatically. +Selenium.prototype.assertValueRepeated = function(locator, text) { + // All locator-strategies are automatically handled by "findElement" + var element = this.page().findElement(locator); + + // Create the text to verify + var expectedValue = text + text; + + // Get the actual element value + var actualValue = element.value; + + // Make sure the actual value matches the expected + Assert.matches(expectedValue, actualValue); +}; + +// All get* methods on the Selenium prototype result in +// store, assert, assertNot, verify, verifyNot, waitFor, and waitForNot commands. +// E.g. add a getTextLength method that returns the length of the text +// of a specified element. +// Will result in support for storeTextLength, assertTextLength, etc. +Selenium.prototype.getTextLength = function(locator) { + return this.getText(locator).length; +}; + +// All locateElementBy* methods are added as locator-strategies. +// Eg add a "valuerepeated=" locator, that finds the first element with the supplied value, repeated. +// The "inDocument" is a the document you are searching. +PageBot.prototype.locateElementByValueRepeated = function(text, inDocument) { + // Create the text to search for + var expectedValue = text + text; + + // Loop through all elements, looking for ones that have a value === our expected value + var allElements = inDocument.getElementsByTagName("*"); + for (var i = 0; i < allElements.length; i++) { + var testElement = allElements[i]; + if (testElement.value && testElement.value === expectedValue) { + return testElement; + } + } + return null; +}; + + |