xebia / Xebium

Xebium provides Selenium (webdriver) bindings for FitNesse, with Selenium-IDE support
http://xebia.github.com/Xebium/
Apache License 2.0
76 stars 62 forks source link

Add selenium-server-standalone jar to pom.xml #127

Open jguglielmi opened 10 years ago

jguglielmi commented 10 years ago

When I switch laptops or work environments, I always find myself spending a lot of time trying to remember how to configure the executable drivers for Chrome and IE.

I like to use the DefaultWebDriverSupplier especially and do my testing over a grid configuration.

I think it'd be a lot simpler to reference the standalone jar file directly in the pom.xml. This way, when I lug around the framework from site to site, I can just start it up and reference the standalone from a common maven location each and every time to stage my own grid configuration. It makes editing scripts and tests a lot simpler instead of having to configure for specific environments. It's also 1 less item I need to setup.

org.seleniumhq.selenium selenium-server-standalone 2.41.0
raboof commented 10 years ago

Sounds useful to me, anyone else see a reason not to add this dependency?

amolenaar commented 10 years ago

How does this help with the special drivers required for Chrome and IE?

jguglielmi commented 10 years ago

Starting up selenium servers from a single location in the .m2 directory means it's one less thing to do in addition to moving the driver executables. Right now, grid configurations require users to download the standalone separately. I just think it'd be nice to have it with the other driver jar files packaged in a single location. On May 18, 2014 10:48 AM, "Arjan Molenaar" notifications@github.com wrote:

How does this help with the special drivers required for Chrome and IE?

— Reply to this email directly or view it on GitHubhttps://github.com/xebia/Xebium/issues/127#issuecomment-43441567 .

cwortel commented 10 years ago

Hi guys,

I think selenium server and the specific drivers are already mavenized, so here it is not going to fix any problem. The only problem I can imagine here is the chromedriver executable (+ie driver), which is not a maven project. It would be cool if it was though, would save a lot of hassle with configuration management. Any ideas why it is not already? Or would there be an alternative way to package these in the project?

Cirilo


From: Jaison Guglielmi notifications@github.com Sent: 18 May 2014 18:15 To: xebia/Xebium Subject: Re: [Xebium] Add selenium-server-standalone jar to pom.xml (#127)

Starting up selenium servers from a single location in the .m2 directory means it's one less thing to do in addition to moving the driver executables. Right now, grid configurations require users to download the standalone separately. I just think it'd be nice to have it with the other driver jar files packaged in a single location. On May 18, 2014 10:48 AM, "Arjan Molenaar" notifications@github.com wrote:

How does this help with the special drivers required for Chrome and IE?

Reply to this email directly or view it on GitHubhttps://github.com/xebia/Xebium/issues/127#issuecomment-43441567 .

Reply to this email directly or view it on GitHubhttps://github.com/xebia/Xebium/issues/127#issuecomment-43443942.

jguglielmi commented 10 years ago

Hi Cirilo! Would it be worth anything if Xebium came packaged with the latest selenium-standalone jar file only and maybe consider creating a fixture to launch a hub and/or node configuration? I agree that users should download the driver executables and set them up in the System Properties, but I still find we should have the selenium-server-standalone somewhere with it to launch the grid and hub. I know a lot of people including myself who work in environments with no internet connection, so we have to move the executable drivers and the individual Maven dependencies with them. It's a pain. Centralizing any part of the process makes life easier.

Maybe put up some documentation or an example of how to use Xebium in a grid configuration? I've got one now I can contribute to the project if you'd like. I found maybe 2 blogs with detailed instructions on it, but I think this is more in the domain of the project examples. I can submit a pull request if you'd like.

cwortel commented 10 years ago

Hi Jaison,

Ok, I now get what you're saying. I indeed have faced the problem that it was difficult (if not practically impossible) to get all the dependencies through an enterprise proxy. Which would result in having to copy paste entire maven repos across workstations. I don't see any harm in at least packaging Xebium with all basic dependencies.

About the documentation, I admit I failed to update it for the last xx months. For now a start would be to update the links-section with stuff like the blogs you mentioned, but it sure needs some work. Any input is welcome.

Regards,

Cirilo


From: Jaison Guglielmi notifications@github.com Sent: 19 May 2014 14:02 To: xebia/Xebium Cc: Cirilo Wortel Subject: Re: [Xebium] Add selenium-server-standalone jar to pom.xml (#127)

Hi Cirilo! Would it be worth anything if Xebium came packaged with the latest selenium-standalone jar file only and maybe consider creating a fixture to launch a hub and/or node configuration? I agree that users should download the driver executables and set them up in the System Properties, but I still find we should have the selenium-server-standalone somewhere with it to launch the grid and hub. I know a lot of people including myself who work in environments with no internet connection, so we have to move the executable drivers and the individual Maven dependencies with them. It's a pain. Centralizing any part of the process makes life easier.

Maybe put up some documentation or an example of how to use Xebium in a grid configuration? I've got one now I can contribute to the project if you'd like. I found maybe 2 blogs with detailed instructions on it, but I think this is more in the domain of the project examples. I can submit a pull request if you'd like.

Reply to this email directly or view it on GitHubhttps://github.com/xebia/Xebium/issues/127#issuecomment-43493454.

jguglielmi commented 10 years ago

Hi all!

So some fun food for thought...I've been working on a generic SeleniumGridFixture.java. I put the standalone-server.jar file in "./FitNesseRoot/files/selenium/standalone/". It works beautifully on Windows. I haven't tried it on Linux, but let me know if this is something that peaks your interests and I'll submit it to the project. Below is a sample test and the code. You'll have to change the URL and the test, but I think you get the idea. :8ball:

package com.xebia.incubator.xebium; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; public class SeleniumGridFixture { public int port = 4444; public String host = "localhost"; public String browserParameters=""; private static final Logger LOG = LoggerFactory.getLogger(SeleniumGridFixture.class);

public SeleniumGridFixture(){
    super();
}

public void setPort(int port){
    this.port=port;
    LOG.info("Port set to:" + port + ".");
}

public void setBrowserParameters(String browserParameters){
    this.browserParameters=browserParameters;
    LOG.info("Browser parameters set to:" + host + ".");
}

public boolean startHubUsingJson(String json){
    Runtime run = Runtime.getRuntime();
    try {
        run.exec("java -jar ./FitNesseRoot/files/selenium/standalone/selenium-server-standalone.jar -role hub -hubConfig " + json);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return false;
    }
    return true;
    //java -jar selenium-server-standalone.jar -role hub -hubConfig hubconfig.json
}
public boolean startHub(){
    Runtime run = Runtime.getRuntime();
    LOG.info("Hub has been started.");
    try {
        run.exec("java -jar ./FitNesseRoot/files/selenium/standalone/selenium-server-standalone.jar -role hub -port " + port);
        //run.exec("cmd.exe /c start cmd.exe /c java -jar ./FitNesseRoot/files/selenium/standalone/selenium-server-standalone.jar -role hub -port " + port);
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return false;
    }
    return true;
}

public boolean startNodeOnHubUrl(String hubUrl){
    Runtime run = Runtime.getRuntime();
    try {
        //java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:5554/grid/register -browser browserName="iexplore",version=ANY,platform=WINDOWS,maxInstances=5 -port 5555
        run.exec("java -jar ./FitNesseRoot/files/selenium/standalone/selenium-server-standalone.jar -role webdriver -hub " + hubUrl + " -browser " + browserParameters + " -port " + port);
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return false;
    }
    return true;
}

}

jguglielmi commented 10 years ago

Sample Test:

!| script | selenium grid fixture | | set port | 5555 | | start hub | | set port | 5556 | | set browser parameters | browserName="iexplore",version=ANY,platform=WINDOWS,maxInstances=5 | | start node on hub url | http://localhost:5555/grid/register | | set port | 5557 | | set browser parameters | browserName="firefox",version=ANY,platform=WINDOWS,maxInstances=5 | | start node on hub url | http://localhost:5555/grid/register | | set port | 5558 | | set browser parameters | browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=5 | | start node on hub url | http://localhost:5555/grid/register |