Hi Jian, The new selenium jar has a json parse error: filename: http://localhost:4444/selenium-server/core/scripts/tellurium.js, linenumber: 160.
com.thoughtworks.selenium.SeleniumException: ERROR: Command execution failure. Please search the Tellurium User Group at http://groups.google.com/group/tellurium-users for error details from the log window.. The error message is: message: JSON.parse, name: SyntaxError, filename: http://localhost:4444/selenium-server/core/scripts/tellurium.js, linenumber: 160. JavaScript Error Stack: {anonymous}("[{\"uid\":\"DspaceLoginForm\",\"args\":[[{\"obj\":{\"uid \":\"DspaceLoginForm\",\"locator\":{\"tag\":\"form\",\"attributes\": {\"id\":\"aspect_eperson_PasswordLogin_div_login\",\"action\":xmlui/ password-login,\"class\":\"ds-interactive-div primary\",\"method\": \"post\"}},\"uiType\":\"Form\",\"metaData\":{\"id\":\"DspaceLoginForm \",\"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm\"},{\"obj\":{\"uid \":\"LoginPassword\",\"locator\":{\"tag\":\"input\",\"attributes\": {\"id\":\"aspect_eperson_PasswordLogin_field_login_password\",\"name\": \"login_password\",\"class\":\"ds-password-field\",\"type\":\"password \"}},\"uiType\":\"InputBox\",\"metaData\":{\"id\":\"LoginPassword\", \"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm.LoginPassword\"}, {\"obj\":{\"uid\":\"LoginEmail\",\"locator\":{\"tag\":\"input\", \"attributes\":{\"id\":\"aspect_eperson_PasswordLogin_field_login_email \",\"name\":\"login_email\",\"class\":\"ds-text-field\",\"type\":\"text \"}},\"uiType\":\"InputBox\",\"metaData\":{\"id\":\"LoginEmail\",\"type \":\"UiObject\"}},\"key\":\"DspaceLoginForm.LoginEmail\"},{\"obj\": {\"uid\":\"Submit\",\"locator\":{\"direct\":true,\"tag\":\"input\", \"attributes\":{\"id\":\"aspect_eperson_PasswordLogin_field_submit\", \"name\":\"submit\",\"value\":\"Sign in\",\"class\":\"ds-button-field \",\"type\":\"submit\"}},\"uiType\":\"SubmitButton\",\"metaData\":{\"id \":\"Submit\",\"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm.Submit \"},{\"obj\":{\"uid\":\"Error\",\"locator\":{\"tag\":\"span\", \"attributes\":{\"class\":\"error\"}},\"uiType\":\"Span\",\"metaData\": {\"id\":\"Error\",\"type\":\"UiObject\"}},\"key\": \"DspaceLoginForm.Error\"}]],\"name\":\"getUseUiModule\",\"sequ\":0}, {\"uid\":\"DspaceLoginForm.LoginEmail\",\"args\": [\"jquery=#aspect_eperson_PasswordLogin_field_login_email\"],\"name\": \"mouseOver\",\"sequ\":6}]")@http://localhost:4444/selenium-server/ core/scripts/tellurium.js:275 {anonymous}("[{\"uid\":\"DspaceLoginForm\",\"args\":[[{\"obj\":{\"uid \":\"DspaceLoginForm\",\"locator\":{\"tag\":\"form\",\"attributes\": {\"id\":\"aspect_eperson_PasswordLogin_div_login\",\"action\":xmlui/ password-login,\"class\":\"ds-interactive-div primary\",\"method\": \"post\"}},\"uiType\":\"Form\",\"metaData\":{\"id\":\"DspaceLoginForm \",\"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm\"},{\"obj\":{\"uid \":\"LoginPassword\",\"locator\":{\"tag\":\"input\",\"attributes\": {\"id\":\"aspect_eperson_PasswordLogin_field_login_password\",\"name\": \"login_password\",\"class\":\"ds-password-field\",\"type\":\"password \"}},\"uiType\":\"InputBox\",\"metaData\":{\"id\":\"LoginPassword\", \"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm.LoginPassword\"}, {\"obj\":{\"uid\":\"LoginEmail\",\"locator\":{\"tag\":\"input\", \"attributes\":{\"id\":\"aspect_eperson_PasswordLogin_field_login_email \",\"name\":\"login_email\",\"class\":\"ds-text-field\",\"type\":\"text \"}},\"uiType\":\"InputBox\",\"metaData\":{\"id\":\"LoginEmail\",\"type \":\"UiObject\"}},\"key\":\"DspaceLoginForm.LoginEmail\"},{\"obj\": {\"uid\":\"Submit\",\"locator\":{\"direct\":true,\"tag\":\"input\", \"attributes\":{\"id\":\"aspect_eperson_PasswordLogin_field_submit\", \"name\":\"submit\",\"value\":\"Sign in\",\"class\":\"ds-button-field \",\"type\":\"submit\"}},\"uiType\":\"SubmitButton\",\"metaData\":{\"id \":\"Submit\",\"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm.Submit \"},{\"obj\":{\"uid\":\"Error\",\"locator\":{\"tag\":\"span\", \"attributes\":{\"class\":\"error\"}},\"uiType\":\"Span\",\"metaData\": {\"id\":\"Error\",\"type\":\"UiObject\"}},\"key\": \"DspaceLoginForm.Error\"}]],\"name\":\"getUseUiModule\",\"sequ\":0}, {\"uid\":\"DspaceLoginForm.LoginEmail\",\"args\": [\"jquery=#aspect_eperson_PasswordLogin_field_login_email\"],\"name\": \"mouseOver\",\"sequ\":6}]","")@http://localhost:4444/selenium-server/ core/scripts/tellurium-extensions.js:348 {anonymous}("[{\"uid\":\"DspaceLoginForm\",\"args\":[[{\"obj\":{\"uid \":\"DspaceLoginForm\",\"locator\":{\"tag\":\"form\",\"attributes\": {\"id\":\"aspect_eperson_PasswordLogin_div_login\",\"action\":xmlui/ password-login,\"class\":\"ds-interactive-div primary\",\"method\": \"post\"}},\"uiType\":\"Form\",\"metaData\":{\"id\":\"DspaceLoginForm \",\"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm\"},{\"obj\":{\"uid \":\"LoginPassword\",\"locator\":{\"tag\":\"input\",\"attributes\": {\"id\":\"aspect_eperson_PasswordLogin_field_login_password\",\"name\": \"login_password\",\"class\":\"ds-password-field\",\"type\":\"password \"}},\"uiType\":\"InputBox\",\"metaData\":{\"id\":\"LoginPassword\", \"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm.LoginPassword\"}, {\"obj\":{\"uid\":\"LoginEmail\",\"locator\":{\"tag\":\"input\", \"attributes\":{\"id\":\"aspect_eperson_PasswordLogin_field_login_email \",\"name\":\"login_email\",\"class\":\"ds-text-field\",\"type\":\"text \"}},\"uiType\":\"InputBox\",\"metaData\":{\"id\":\"LoginEmail\",\"type \":\"UiObject\"}},\"key\":\"DspaceLoginForm.LoginEmail\"},{\"obj\": {\"uid\":\"Submit\",\"locator\":{\"direct\":true,\"tag\":\"input\", \"attributes\":{\"id\":\"aspect_eperson_PasswordLogin_field_submit\", \"name\":\"submit\",\"value\":\"Sign in\",\"class\":\"ds-button-field \",\"type\":\"submit\"}},\"uiType\":\"SubmitButton\",\"metaData\":{\"id \":\"Submit\",\"type\":\"UiObject\"}},\"key\":\"DspaceLoginForm.Submit \"},{\"obj\":{\"uid\":\"Error\",\"locator\":{\"tag\":\"span\", \"attributes\":{\"class\":\"error\"}},\"uiType\":\"Span\",\"metaData\": {\"id\":\"Error\",\"type\":\"UiObject\"}},\"key\": \"DspaceLoginForm.Error\"}]],\"name\":\"getUseUiModule\",\"sequ\":0}, {\"uid\":\"DspaceLoginForm.LoginEmail\",\"args\": [\"jquery=#aspect_eperson_PasswordLogin_field_login_email\"],\"name\": \"mouseOver\",\"sequ\":6}]","")@http://localhost:4444/selenium-server/ core/scripts/htmlutils.js:60 {anonymous}([object Object],[object Object])@http://localhost:4444/ selenium-server/core/scripts/selenium-commandhandlers.js:330 {anonymous}()@http://localhost:4444/selenium-server/core/scripts/ selenium-executionloop.js:112 {anonymous}(0)@http://localhost:4444/selenium-server/core/scripts/ selenium-executionloop.js:78 {anonymous}(0)@http://localhost:4444/selenium-server/core/scripts/ htmlutils.js:60 JavaScript Error Stack: {anonymous}(null)@http://localhost:4444/selenium-server/core/scripts/ tellurium-utils.js:638 printStackTrace()@http://localhost:4444/selenium-server/core/scripts/ tellurium-utils.js:623 {anonymous}("Command execution failure. Please search the Tellurium User Group at http://groups.google.com/group/tellurium-users for error details from the log window.. The error message is: message: JSON.parse, name: SyntaxError, filename: http://localhost:4444/selenium-server/core/scripts/tellurium.js, linenumber: 160. \nJavaScript Error Stack: \n{anonymous}(\"[{\\\"uid\\ \":\\\"DspaceLoginForm\\\",\\\"args\\\":[[{\\\"obj\\\":{\\\"uid\\\":\\ \"DspaceLoginForm\\\",\\\"locator\\\":{\\\"tag\\\":\\\"form\\\",\\ \"attributes\\\":{\\\"id\\\":\\\"aspect_eperson_PasswordLogin_div_login \\\",\\\"action\\\":xmlui/password-login,\\\"class\\\":\\\"ds- interactive-div primary\\\",\\\"method\\\":\\\"post\\\"}},\\\"uiType\\ \":\\\"Form\\\",\\\"metaData\\\":{\\\"id\\\":\\\"DspaceLoginForm\\\",\\ \"type\\\":\\\"UiObject\\\"}},\\\"key\\\":\\\"DspaceLoginForm\\\"},{\\ \"obj\\\":{\\\"uid\\\":\\\"LoginPassword\\\",\\\"locator\\\":{\\\"tag\\ \":\\\"input\\\",\\\"attributes\\\":{\\\"id\\\":\\ \"aspect_eperson_PasswordLogin_field_login_password\\\",\\\"name\\\":\\ \"login_password\\\",\\\"class\\\":\\\"ds-password-field\\\",\\\"type\\ \":\\\"password\\\"}},\\\"uiType\\\":\\\"InputBox\\\",\\\"metaData\\\": {\\\"id\\\":\\\"LoginPassword\\\",\\\"type\\\":\\\"UiObject\\\"}},\\ \"key\\\":\\\"DspaceLoginForm.LoginPassword\\\"},{\\\"obj\\\":{\\\"uid\ \\":\\\"LoginEmail\\\",\\\"locator\\\":{\\\"tag\\\":\\\"input\\\",\\ \"attributes\\\":{\\\"id\\\":\\ \"aspect_eperson_PasswordLogin_field_login_email\\\",\\\"name\\\":\\ \"login_email\\\",\\\"class\\\":\\\"ds-text-field\\\",\\\"type\\\":\\ \"text\\\"}},\\\"uiType\\\":\\\"InputBox\\\",\\\"metaData\\\":{\\\"id\\ \":\\\"LoginEmail\\\",\\\"type\\\":\\\"UiObject\\\"}},\\\"key\\\":\\ \"DspaceLoginForm.LoginEmail\\\"},{\\\"obj\\\":{\\\"uid\\\":\\\"Submit\ \\",\\\"locator\\\":{\\\"direct\\\":true,\\\"tag\\\":\\\"input\\\",\\ \"attributes\\\":{\\\"id\\\":\\ \"aspect_eperson_PasswordLogin_field_submit\\\",\\\"name\\\":\\\"submit \\\",\\\"value\\\":\\\"Sign in\\\",\\\"class\\\":\\\"ds-button-field\\ \",\\\"type\\\":\\\"submit\\\"}},\\\"uiType\\\":\\\"SubmitButton\\\",\\ \"metaData\\\":{\\\"id\\\":\\\"Submit\\\",\\\"type\\\":\\\"UiObject\\ \"}},\\\"key\\\":\\\"DspaceLoginForm.Submit\\\"},{\\\"obj\\\":{\\\"uid\ \\":\\\"Error\\\",\\\"locator\\\":{\\\"tag\\\":\\\"span\\\",\\ \"attributes\\\":{\\\"class\\\":\\\"error\\\"}},\\\"uiType\\\":\\\"Span \\\",\\\"metaData\\\":{\\\"id\\\":\\\"Error\\\",\\\"type\\\":\\ \"UiObject\\\"}},\\\"key\\\":\\\"DspaceLoginForm.Error\\\"}]],\\\"name\ \\":\\\"getUseUiModule\\\",\\\"sequ\\\":0},{\\\"uid\\\":\\ \"DspaceLoginForm.LoginEmail\\\",\\\"args\\\":[\\ \"jquery=#aspect_eperson_PasswordLogin_field_login_email\\\"],\\\"name\ \\":\\\"mouseOver\\\",\\\"sequ\\\":6}]\")@http://localhost:4444/ selenium-server/core/scripts/tellurium.js:275\n\n{anonymous}(\"[{\\ \"uid\\\":\\\"DspaceLoginForm\\\",\\\"args\\\":[[{\\\"obj\\\":{\\\"uid\ \\":\\\"DspaceLoginForm\\\",\\\"locator\\\":{\\\"tag\\\":\\\"form\\\",\ \\"attributes\\\":{\\\"id\\\":\\ \"aspect_eperson_PasswordLogin_div_login\\\",\\\"action\\\":xmlui/ password-login,\\\"class\\\":\\\"ds-interactive-div primary\\\",\\ \"method\\\":\\\"post\\\"}},\\\"uiType\\\":\\\"Form\\\",\\\"metaData\\ \":{\\\"id\\\":\\\"DspaceLoginForm\\\",\\\"type\\\":\\\"UiO... Jade On Sep 3, 3:28 pm, Jian Fang <[email protected]> wrote: > Sorry, I was wrong, "index" parameter is correct. Seems "selectedIndex" is > only used in jQuery. > > http://marcgrabanski.com/articles/jquery-select-list-values > > Then, the problem is really wired. > > I just added the getSelectedIndex() to the Engine project. Only for proof > purpose, if you run the following snapshot selenium server with Tellurium > APIs and cache enabled, > > http://maven.kungfuters.org/content/repositories/snapshots/org/seleni... > > is the problem still there? > > Thanks, > > Jian > > On Fri, Sep 3, 2010 at 3:50 PM, Jian Fang <[email protected]> wrote: > > Hi Jade, > > > If you are not using Tellurium Engine, you don't need to use cache. Since > > the getSelectedIndex is not > > implemented in Tellurium APIs, Tellurium Engine simply delegates the call > > to Selenium core. To prove this, > > set > > > useTelluriumApi(false); > > > to see if the problem is still there. > > > If it is still there, it must be the Selenium API problem. I suspect the > > "index" parameter in the method getSelectedIndex() > > should be "selectedIndex". > > > Will try some tests later. > > > Thanks, > > > Jian > > > On Fri, Sep 3, 2010 at 3:23 PM, Jade <[email protected]> wrote: > > >> Hi Jian, > > >> getSelectedValue works fine as does getSelectOptions and > >> getSelectValues. > > >> These are my test options: > > >> useTelluriumEngine(false); > >> useTelluriumApi(true); > >> useCache false > >> useCssSelector(true); > >> useTrace(true); > > >> I set useCache to false since the html changes with ajax but it > >> doesn't seem to fix those problems. > > >> The following method works since I changed to using getSelectedValue > >> instead of getSelectedIndex but it would be nice to have both options. > > >> /** > >> * Test the option specified by the indx for the selection. > >> * > >> * @param uid > >> * @param module > >> * @param indx > >> * @param shouldFail -- true if the indx should not be able to be > >> selected > >> */ > >> public static void selectClickableOption(final String listUid, > >> final > >> String selectorId, > >> final DslContext module, final int indx, boolean shouldFail) { > > >> log.info "selectClickableOption ${selectorId}" > >> // With Ajax, the module has to be clicked on so the uid > >> is found. > >> module.click listUid > > >> int len = module.getSelectOptions(selectorId).size() > > >> log.info("selector size (" + selectorId + "): " + len); > > >> if (indx > len) { > >> fail("${indx} > selector size, ${selectorId}, size: > >> ${len}") > >> } > > >> if (indx < 1) { > >> fail("indx: ${indx} must be at least 1 or greater, > >> ${selectorId}, > >> size: ${len}") > >> } > > >> boolean successful = false; > >> int maxTries = 5; > >> int tries = 0; > >> // Due to ajax timing issues, try more than once to perform > >> this > >> action. > >> while (!successful && tries < maxTries) { > >> try { > >> // workaround due to tellurium bug with > >> indx problem returning 48 > >> when index set to 1 > >> // see > >>http://groups.google.com/group/tellurium-users/browse_thread/thread/9... > >> // With Ajax, the module has to be clicked > >> on so the uid is found. > >> module.click listUid > > >> module.pause(VireoTestConfig.getPauseTime()); > > >> String[] values = > >> module.getSelectValues(selectorId) > >> for (value in values) > >> log.info "value: ${value}" > > >> // With Ajax, the module has to be clicked > >> on so the uid is found. > >> module.click listUid > > >> module.pause(VireoTestConfig.getPauseTime()); > > >> String[] options = > >> module.getSelectOptions(selectorId) > >> for (option in options) > >> log.info "option: ${option}" > > >> // without this, times out and field is no > >> longer selectable > >> module.click listUid > > >> module.pause(VireoTestConfig.getPauseTime()); > >> String origValue = > >> module.getSelectedValue(selectorId) > > >> module.click listUid > > >> module.pause(VireoTestConfig.getPauseTime()); > >> int origIndx = > >> module.getSelectedIndex(selectorId); > >> log.info "origIndx: ${origIndx}" > >> // bug? > >> // module.selectByIndex(selectorId, indx); > > >> // int selected = > >> module.getSelectedIndex(selectorId); > >> module.click listUid > >> module.selectByValue selectorId, > >> values[indx] > >> module.click listUid > >> String selectedValue = > >> module.getSelectedValue(selectorId) > > >> // if (shouldFail) { > >> // > >> assertEquals("selectOption: selecting ${indx} for $ > >> {selectorId} should have failed", origIndx, selected); > >> // } else { > >> // > >> assertEquals("selectOption: selecting ${indx} for $ > >> {selectorId} should have succeeded", indx, selected); > >> // } > >> successful = true > >> if (shouldFail) { > >> assertEquals("selectOption: > >> selecting ${indx} for ${selectorId} > >> should have failed", origValue, selectedValue); > >> } else { > >> assertEquals("selectOption: > >> selecting ${indx} for ${selectorId} > >> should have succeeded", values[indx], selectedValue); > >> } > >> } catch (Exception e) { > >> log.error("ajax timing error: " + > >> e.getMessage()) > >> tries++ > >> } catch (Throwable t) { > >> log.error("ajax timing error: " + > >> t.getMessage()) > >> tries++ > >> } > >> } > >> } > > >> Jade > > >> On Sep 3, 1:24 pm, Jian Fang <[email protected]> wrote: > >> > The Selenium call stack is as follows: > > >> > Selenium.prototype.getSelectedIndex = function(selectLocator) { > >> > /** Gets option index (option number, starting at 0) for selected > >> option > >> > in the specified select element. > >> > * > >> > * @param selectLocator an <a href="#locators">element locator</a> > >> > identifying a drop-down menu > >> > * @return string the selected option index in the specified select > >> > drop-down > >> > */ > >> > return this.findSelectedOptionProperty(selectLocator, "index"); > > >> > } > > >> > Selenium.prototype.findSelectedOptionProperty = function(locator, > >> property) > >> > { > >> > var selectedOptions = this.findSelectedOptionProperties(locator, > >> > property); > >> > if (selectedOptions.length > 1) { > >> > Assert.fail("More than one selected option!"); > >> > } > >> > return selectedOptions[0]; > > >> > } > > >> > Selenium.prototype.findSelectedOptionProperties = function(locator, > >> > property) { > >> > var element = this.browserbot.findElement(locator); > >> > if (!("options" in element)) { > >> > throw new SeleniumError("Specified element is not a Select (has > >> no > >> > options)"); > >> > } > > >> > var selectedOptions = []; > > >> > for (var i = 0; i < element.options.length; i++) { > >> > if (element.options[i].selected) > >> > { > >> > var propVal = element.options[i][property]; > >> > selectedOptions.push(propVal); > >> > } > >> > } > >> > if (selectedOptions.length == 0) Assert.fail("No option selected"); > >> > return selectedOptions; > > >> > } > > >> > The getSelectedValue implementation is similar: > > >> > Selenium.prototype.getSelectedValue = function(selectLocator) { > >> > /** Gets option value (value attribute) for selected option in the > >> > specified select element. > >> > * > >> > * @param selectLocator an <a href="#locators">element locator</a> > >> > identifying a drop-down menu > >> > * @return string the selected option value in the specified select > >> > drop-down > >> > */ > >> > return this.findSelectedOptionProperty(selectLocator, "value"); > > >> > } > > >> > What is the value your get back for getSelectedValue()? > > >> > If getSelectedValue() returns a correct value, then it is the > >> > getSelectedIndex() implementation problem. > >> > If both return wrong values, then, it is probably the runtime locator > >> > problem. Are you using CSS selector? > > >> > Thanks, > > >> > Jian > > >> > On Fri, Sep 3, 2010 at 11:10 AM, Jade <[email protected]> wrote: > >> > > Hi Jian, > > >> > > The HTMLSource is very long. Here's the part that matches this > >> > > selector in one module: Selector(uid: "degreeSelector", clocator: [id: > >> > > "aspect_vireo_admin_View_field_degree"]) > > >> > > and the List in the other module: List(uid: "degree", clocator: [tag: > >> > > "ol", id: "aspect_vireo_admin_View_field_degree"], separator: "li") { > >> > > Container(uid: "{all}", clocator: [:]) > > ... > > read more » -- You received this message because you are subscribed to the Google Groups "tellurium-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/tellurium-users?hl=en.
