Blame | Letzte Änderung | Log anzeigen | RSS feed
objectExtend(HtmlTestRunnerControlPanel.prototype, {getTestSuiteName: function() {return document.location+'?testSuites'; //this._getQueryParameter("test");}});SeleniumFrame.prototype._setLocation = function(location) {/* var isChrome = browserVersion.isChrome || false;var isHTA = browserVersion.isHTA || false;// DGF TODO multiWindowlocation += "?thisIsChrome=" + isChrome + "&thisIsHTA=" + isHTA;*/if (browserVersion.isSafari) {// safari doesn't reload the page when the location equals to current location.// hence, set the location to blank so that the page will reload automatically.this.frame.src = "about:blank";this.frame.src = location;} else {this.frame.contentWindow.location.replace(location);}};SeleniumFrame.prototype._attachStylesheet = function(){var base_url = script_base_url;var d = this.getDocument();var head = d.getElementsByTagName('head').item(0);var styleLink = d.createElement("link");styleLink.rel = "stylesheet";styleLink.type = "text/css";styleLink.href = base_url + "core/selenium-test.css";head.appendChild(styleLink);};HtmlTestFrame.prototype._setLocation = SeleniumFrame.prototype._setLocation;HtmlTestSuiteFrame.prototype._setLocation = SeleniumFrame.prototype._setLocation;HtmlTestFrame.prototype._attachStylesheet = SeleniumFrame.prototype._attachStylesheet;HtmlTestSuiteFrame.prototype._attachStylesheet = SeleniumFrame.prototype._attachStylesheet;objectExtend(HtmlTestRunnerControlPanel.prototype, {_parseQueryParameter: function() {var tempRunInterval = this._getQueryParameter("runInterval");if (tempRunInterval) {this.setRunInterval(tempRunInterval);}}});/*** Override selenium implementation.*/Selenium.prototype.getAttribute = function(target) {return this.page().findAttribute(target);};/*** Override selenium implementation.*/Selenium.prototype.isVisible = function(locator) {var element;element = this.page().findElement(locator);if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))var visibility = element.style["visibility"];elsevar visibility = this.findEffectiveStyleProperty(element, "visibility");var _isDisplayed = this._isDisplayed(element);return (visibility != "hidden" && _isDisplayed);};/*** Override selenium implementation.*/Selenium.prototype._isDisplayed = function(element) {if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))var display = element.style["display"];elsevar display = this.findEffectiveStyleProperty(element, "display");if (display == "none") return false;if (element.parentNode.style) {return this._isDisplayed(element.parentNode);}return true;};Selenium.prototype.assertEmptySelection = function(selectLocator, optionLocator){/*** Verifies that the selected option of a drop-down satisfies the optionSpecifier.** <p>See the select command for more information about option locators.</p>** @param selectLocator an <a href="#locators">element locator</a> identifying a drop-down menu* @param optionLocator an option locator, typically just an option label (e.g. "John Smith")*/var element = this.page().findElement(selectLocator);var locator = this.optionLocatorFactory.fromLocatorString(optionLocator);return element.selectedIndex == -1;}objectExtend(HtmlTestSuite.prototype, {_onTestSuiteComplete: function() {this.markDone();var result = new TestResult(this.failed, this.getTestTable());postTestResults(this.failed, this.getTestTable(), result);}});// Post the results to a servlet, CGI-script, etc. The URL of the// results-handler defaults to "/postResults", but an alternative location// can be specified by providing a "resultsUrl" query parameter.//// Parameters passed to the results-handler are:// result: passed/failed depending on whether the suite passed or failed// totalTime: the total running time in seconds for the suite.//// numTestPasses: the total number of tests which passed.// numTestFailures: the total number of tests which failed.//// numCommandPasses: the total number of commands which passed.// numCommandFailures: the total number of commands which failed.// numCommandErrors: the total number of commands which errored.//// suite: the suite table, including the hidden column of test results// testTable.1 to testTable.N: the individual test tables//function postTestResults(suiteFailed, suiteTable, result) {form = document.createElement("form");document.body.appendChild(form);form.id = "resultsForm";form.method="post";form.target="myiframe";var resultsUrl = post_results_to;if (!resultsUrl) {resultsUrl = "./results.php";}var actionAndParameters = resultsUrl.split('?',2);form.action = actionAndParameters[0];LOG.warn(form.action)var resultsUrlQueryString = actionAndParameters[1];form.createHiddenField = function(name, value) {input = document.createElement("input");input.type = "hidden";input.name = name;input.value = value;this.appendChild(input);};if (resultsUrlQueryString) {var clauses = resultsUrlQueryString.split('&');for (var i = 0; i < clauses.length; i++) {var keyValuePair = clauses[i].split('=',2);var key = unescape(keyValuePair[0]);var value = unescape(keyValuePair[1]);form.createHiddenField(key, value);}}form.createHiddenField("result", suiteFailed == true ? "failed" : "passed");form.createHiddenField("totalTime", Math.floor((result.metrics.currentTime - result.metrics.startTime) / 1000));form.createHiddenField("numTestPasses", result.metrics.numTestPasses);form.createHiddenField("numTestFailures", result.metrics.numTestFailures);form.createHiddenField("numCommandPasses", result.metrics.numCommandPasses);form.createHiddenField("numCommandFailures", result.metrics.numCommandFailures);form.createHiddenField("numCommandErrors", result.metrics.numCommandErrors);// Create an input for each test table. The inputs are named// testTable.1, testTable.2, etc.for (rowNum = 1; rowNum < suiteTable.rows.length;rowNum++) {// If there is a second column, then add a new inputif (suiteTable.rows[rowNum].cells.length > 1) {var resultCell = suiteTable.rows[rowNum].cells[1];parse_resultCell(resultCell,rowNum,form);//form.createHiddenField("tests[]", resultCell.innerHTML);// remove the resultCell, so it's not included in the suite HTML//resultCell.parentNode.removeChild(resultCell);}}// Add HTML for the suite itself//form.createHiddenField("suite", suiteTable.parentNode.innerHTML);form.submit();document.body.removeChild(form);}function parse_resultCell(resultCell,rowNum,form){var div = resultCell.childNodes[0];var table;for(var i = 0; i<div.childNodes.length; i++){if(div.childNodes[i].nodeName.toLowerCase() == 'table')table = div.childNodes[i];}//LOG.info(div.innerHTML);var testname = table.rows[0].cells[0].firstChild.innerHTML;var resultColor = get_color_status(table.rows[0]);form.createHiddenField("tests["+rowNum+"][testcase]",testname);//var trace = window.testSuiteFrame.prado_trace[testname];for(var i = 1; i<table.rows.length; i++){var msg = table.rows[i].getAttribute("title");var result = get_color_status(table.rows[i]);var action = table.rows[i].cells[0].innerHTML;var target = table.rows[i].cells[1].innerHTML;var param = table.rows[i].cells[2].innerHTML;var id = "tests["+rowNum+"][commands]["+(i-1)+"]";form.createHiddenField(id+"[command]", "|"+action+"|"+target+"|"+param+"|");form.createHiddenField(id+"[result]", result);form.createHiddenField(id+"[msg]", msg);//form.createHiddenField(id+"[trace]", trace[i-1]);}}function get_color_status(element){var color = element.classNameif(color == 'status_passed') return "passed";if(color == 'status_failed') return "failed";if(color == 'status_done') return "done";return "";}Selenium.prototype.assertHTMLPresent = function(expectedValue) {var actualValue = this.page().currentDocument.body.innerHTML;if(actualValue.indexOf(expectedValue) >= 0)return;Assert.fail("Unable to find '"+(expectedValue.replace(/</g, "<").replace(/>/g, ">").replace(/"/g, "\""))+"' in document.body");};Selenium.prototype.assertHTMLNotPresent = function(expectedValue) {var actualValue = this.page().currentDocument.body.innerHTML;if(actualValue.indexOf(expectedValue) < 0)return;Assert.fail("'"+(expectedValue.replace(/</g, "<").replace(/>/g, ">").replace(/"/g, "\""))+"' was found in document.body");};