Good afternoon Isomorphic and Community,
After reading the user guide included about Selenium extensively, I have decided to use the Selenium RC for my Java scripts. I am currently running into an issue with the Selenium extensions that are provided with the version of smartgwt3.1d. (Versions of the SmartClient and Browser in question are stated at the bottom of this post.) The following is a list of steps I have done to create this issue.
***Pre-Conditions***
1. Selenium IDE is installed and has user-extensions.js and user-extensions-ide.js files are loaded.
2. TestNG is installed and being used to run unit tests in Java.
3. Java classpath contains:
Selenium v2.24.1 .jars (java client, server, java client srcs)
TestNG v6.5.2 .jar
4. The selenium .jars and the SmartGWT user-extensions.js are in the same directory.
***Steps***
1. Test case is carried out through Selenium IDE.
2. The commands waitForElementClickable, as well as scLocator syntax, etc. are displayed. This shows that Selenium is recognizing the user extensions.
3. The test case is saved and exported to TestNG Java syntax and is loaded as a script into a sample TestNG class.
4. Additional code is modified to set up the test case properly. See the whole TestNG class code below.
5. Run the Selenium standalone server using the command line arguments
5. Run the testNG class.
***Problem***
See the output log of the selenium server below.
According to the output, it is timing out because that element never becomes clickable. After further investigation, this is what I have found out:
***Notes of interest***
1. Without user extensions, the default locator syntax recognizes this xpath and can proceed. (According to the selenium docs, this is not a stable way to test.)
2. After multiple Selenium IDE runs, the ID is always the same. I don't believe the issue is dynamically generated IDs.
3. With the user extensions, when it loads and I do a refresh it will recognize the waitForElementClickable command and proceed, however it will not click on that element. Below is a sample of what I mean.
According to the above output, it is saying that the element is not found.
***Question to Isomorphic***
I have exhausted all research from google, SmartClient forums, etc. According to what I have found, most responses explain to be sure to run the Selenium server with the user extensions and verify they are in the same directory. Is there something I am missing in order to get the scLocators to work? Is there a subtle modification I need to make to my testNG class that gets lost in the export? Since the scLocators are auto-generated, I wouldn't think to touch them. Is there a bug with the user-extensions.js? I read the SmartGWT Selenium guide and am out of options at this point. If there is any insight in where to begin, it would be greatly appreciated. I look forward to hearing from the community as well about it.
Regards,
JEberhardt
SmartClient Version: SNAPSHOT_v8.3d_2012-07-09/EVAL Deployment (expires 2012.09.07_06.35.59) Licensed to: Isomorphic Software (#ISC_EVAL_NIGHTLY)
Browser: Firefox v13.0.1
After reading the user guide included about Selenium extensively, I have decided to use the Selenium RC for my Java scripts. I am currently running into an issue with the Selenium extensions that are provided with the version of smartgwt3.1d. (Versions of the SmartClient and Browser in question are stated at the bottom of this post.) The following is a list of steps I have done to create this issue.
***Pre-Conditions***
1. Selenium IDE is installed and has user-extensions.js and user-extensions-ide.js files are loaded.
2. TestNG is installed and being used to run unit tests in Java.
3. Java classpath contains:
Selenium v2.24.1 .jars (java client, server, java client srcs)
TestNG v6.5.2 .jar
4. The selenium .jars and the SmartGWT user-extensions.js are in the same directory.
***Steps***
1. Test case is carried out through Selenium IDE.
2. The commands waitForElementClickable, as well as scLocator syntax, etc. are displayed. This shows that Selenium is recognizing the user extensions.
3. The test case is saved and exported to TestNG Java syntax and is loaded as a script into a sample TestNG class.
4. Additional code is modified to set up the test case properly. See the whole TestNG class code below.
Code:
package test.cases; import com.thoughtworks.selenium.*; import org.testng.annotations.*; import java.util.regex.Pattern; import org.testng.Assert; public class Case1 extends SeleneseTestNgHelper { Selenium selenium; HttpCommandProcessor proc; void waitForElementClickable(String locator) { String[] locatorArg = {locator}; proc.doCommand("waitForElementClickable", locatorArg); } @BeforeSuite public void setup() { proc = new HttpCommandProcessor("localhost", 4444, "*firefox", "http://10.1.2.3:8080/"); selenium = new DefaultSelenium(proc); selenium.start(); } @Test public void testCase1() throws Exception { selenium.setSpeed("1000"); selenium.open("dev/"); selenium.windowFocus(); selenium.windowMaximize(); waitForElementClickable("scLocator=//TreeGrid[ID=\"isc_TreeGrid_0\"]/body/row[technologyNumber=4||technologyDescription=ALC%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20||1]/col[fieldName=technologyDescription||0]"); selenium.click("scLocator=//TreeGrid[ID=\"isc_TreeGrid_0\"]/body/row[technologyNumber=4||technologyDescription=ALC%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20||1]/col[fieldName=technologyDescription||0]"); @AfterClass public void tearDown() { selenium.stop(); } }
Code:
-java -jar selenium-server-standalone-2.24.1.jar -userExtensions user-extensions.js > output.txt
***Problem***
See the output log of the selenium server below.
Code:
13:16:40.129 INFO - Java: Oracle Corporation 22.1-b02 13:16:40.131 INFO - OS: Windows 7 6.1 amd64 13:16:40.138 INFO - v2.24.1, with Core v2.24.1. Built from revision 17205 13:16:40.255 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 13:16:40.256 INFO - Version Jetty/5.1.x 13:16:40.257 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver] 13:16:40.257 INFO - Started HttpContext[/selenium-server,/selenium-server] 13:16:40.258 INFO - Started HttpContext[/,/] 13:16:40.330 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@5fa0f02a 13:16:40.331 INFO - Started HttpContext[/wd,/wd] 13:16:40.336 INFO - Started SocketListener on 0.0.0.0:4444 13:16:40.336 INFO - Started org.openqa.jetty.jetty.Server@f33ef6a 13:17:05.512 INFO - Checking Resource aliases 13:17:05.514 INFO - Checking Resource aliases 13:17:05.518 INFO - Command request: getNewBrowserSession[*firefox, http://10.1.2.3:8080/, ] on session null 13:17:05.520 INFO - creating new remote session 13:17:05.571 INFO - Allocated session b0dc34722c52421e9741336dacd9d815 for http://10.1.2.3:8080/, launching... jar:file:/C:/eclipse/workspace/sample-project/war/WEB-INF/lib/selenium-server-standalone-2.24.1.jar!/customProfileDirCUSTFFCHROME 13:17:05.731 INFO - Preparing Firefox profile... 13:17:06.782 INFO - Launching Firefox... 13:17:09.233 INFO - Got result: OK,b0dc34722c52421e9741336dacd9d815 on session b0dc34722c52421e9741336dacd9d815 13:17:09.420 INFO - Command request: getNewBrowserSession[*iexplore, http://localhost:4444, ] on session null 13:17:09.421 INFO - creating new remote session 13:17:09.423 INFO - Allocated session 59d86013535642ac85eda891946706e3 for http://localhost:4444, launching... jar:file:/C:/eclipse/workspace/sample-project/war/WEB-INF/lib/selenium-server-standalone-2.24.1.jar!/core 13:17:10.863 INFO - Launching Embedded Internet Explorer... 13:17:11.369 INFO - Launching Internet Explorer HTA... 13:17:14.753 INFO - Got result: OK,59d86013535642ac85eda891946706e3 on session 59d86013535642ac85eda891946706e3 13:17:14.765 INFO - Command request: setContext[Case1.testCase1, ] on session 59d86013535642ac85eda891946706e3 13:17:14.825 INFO - Got result: OK on session 59d86013535642ac85eda891946706e3 13:17:14.851 INFO - Command request: setSpeed[1000, ] on session b0dc34722c52421e9741336dacd9d815 13:17:14.851 INFO - Got result: OK on session b0dc34722c52421e9741336dacd9d815 13:17:14.853 INFO - Command request: open[dev/, ] on session b0dc34722c52421e9741336dacd9d815 13:17:21.587 INFO - Got result: OK on session b0dc34722c52421e9741336dacd9d815 13:17:21.591 INFO - Command request: windowFocus[, ] on session b0dc34722c52421e9741336dacd9d815 13:17:22.727 INFO - Got result: OK on session b0dc34722c52421e9741336dacd9d815 13:17:22.730 INFO - Command request: windowMaximize[, ] on session b0dc34722c52421e9741336dacd9d815 13:17:23.746 INFO - Got result: OK on session b0dc34722c52421e9741336dacd9d815 13:17:23.751 INFO - Command request: waitForElementClickable[scLocator=//TreeGrid[ID="isc_TreeGrid_0"]/body/row[technologyNumber=4||technologyDescription=ALC%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20||1]/col[fieldName=technologyDescription||0], ] on session b0dc34722c52421e9741336dacd9d815 13:17:54.765 INFO - Got result: Timed out after 30000ms on session b0dc34722c52421e9741336dacd9d815 13:17:54.807 INFO - Command request: captureScreenshot[C:\eclipse\workspace\sample-project\test-output\Default suite\TEST-testCase13541679687329543299.png, ] on session null 13:17:54.831 INFO - Creating Robot 13:17:56.758 INFO - Got result: OK on session null 13:17:56.762 INFO - Command request: selectWindow[null, ] on session 59d86013535642ac85eda891946706e3 13:17:56.820 INFO - Got result: OK on session 59d86013535642ac85eda891946706e3 13:17:56.822 INFO - Command request: testComplete[, ] on session b0dc34722c52421e9741336dacd9d815 13:17:56.823 INFO - Killing Firefox... 13:17:57.006 INFO - Got result: OK on session b0dc34722c52421e9741336dacd9d815
***Notes of interest***
1. Without user extensions, the default locator syntax recognizes this xpath and can proceed. (According to the selenium docs, this is not a stable way to test.)
2. After multiple Selenium IDE runs, the ID is always the same. I don't believe the issue is dynamically generated IDs.
3. With the user extensions, when it loads and I do a refresh it will recognize the waitForElementClickable command and proceed, however it will not click on that element. Below is a sample of what I mean.
Code:
13:31:55.427 INFO - Command request: waitForElementClickable[scLocator=//TreeGrid[ID="isc_TreeGrid_0"]/body/row[technologyNumber=4||technologyDescription=ALC%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20||1]/col[fieldName=technologyDescription||0], ] on session 872b9ff33ad1432eabd2853d6d882bb7 13:32:01.855 INFO - Got result: OK on session 872b9ff33ad1432eabd2853d6d882bb7 13:32:01.860 INFO - Command request: click[scLocator=//TreeGrid[ID="isc_TreeGrid_0"]/body/row[technologyNumber=4||technologyDescription=ALC%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20||1]/col[fieldName=technologyDescription||0], ] on session 872b9ff33ad1432eabd2853d6d882bb7 13:32:02.872 INFO - Got result: ERROR: Element scLocator=//TreeGrid[ID="isc_TreeGrid_0"]/body/row[technologyNumber=4||technologyDescription=ALC%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20||1]/col[fieldName=technologyDescription||0] not found on session 872b9ff33ad1432eabd2853d6d882bb7 13:32:02.882 INFO - Command request: captureScreenshot[C:\eclipse\workspace\sample-project\test-output\Default suite\TEST-testCase11833577582995738593.png, ] on session null 13:32:03.209 INFO - Got result: OK on session null 13:32:03.212 INFO - Command request: selectWindow[null, ] on session 6668eff77f344180ab8789b36a316333 13:32:03.262 INFO - Got result: OK on session 6668eff77f344180ab8789b36a316333 13:32:03.264 INFO - Command request: testComplete[, ] on session 872b9ff33ad1432eabd2853d6d882bb7 13:32:03.264 INFO - Killing Firefox... 13:32:03.497 INFO - Got result: OK on session 872b9ff33ad1432eabd2853d6d882bb7
***Question to Isomorphic***
I have exhausted all research from google, SmartClient forums, etc. According to what I have found, most responses explain to be sure to run the Selenium server with the user extensions and verify they are in the same directory. Is there something I am missing in order to get the scLocators to work? Is there a subtle modification I need to make to my testNG class that gets lost in the export? Since the scLocators are auto-generated, I wouldn't think to touch them. Is there a bug with the user-extensions.js? I read the SmartGWT Selenium guide and am out of options at this point. If there is any insight in where to begin, it would be greatly appreciated. I look forward to hearing from the community as well about it.
Regards,
JEberhardt
SmartClient Version: SNAPSHOT_v8.3d_2012-07-09/EVAL Deployment (expires 2012.09.07_06.35.59) Licensed to: Isomorphic Software (#ISC_EVAL_NIGHTLY)
Browser: Firefox v13.0.1
Comment