Blame | Letzte Änderung | Log anzeigen | RSS feed
/** 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 automaticallySelenium.prototype.doTypeRepeated = function(locator, text) {// All locator-strategies are automatically handled by "findElement"var element = this.page().findElement(locator);// Create the text to typevar valueToType = text + text;// Replace the element text with the new textthis.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 verifyvar expectedValue = text + text;// Get the actual element valuevar actualValue = element.value;// Make sure the actual value matches the expectedAssert.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 forvar expectedValue = text + text;// Loop through all elements, looking for ones that have a value === our expected valuevar 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;};