Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selenium Webdriver remote setup

I have the selenium-server-standalone.jar running on my local machine, and the tests I want to run compiled on my remote machine, but I have no idea how I make the tests connect to the machine that will run the browser. Any help appreciated.

Update: On my local machine (the one I will be running the browser on) I ran

java -jar selenium-server-standalone-2.25.0.jar -mode hub

on my remote machine (that I will run the tests from) I ran

java -jar selenium-server-standalone-2.25.0.jar -role webDriver -hub http://**My ip*:4444

my code contains the following:

 @Before
    public void setUp() throws Exception {
            DesiredCapabilities capability = DesiredCapabilities.firefox();
            driver = new RemoteWebDriver(new URL("http://**My ip**:4444/wd/hub"),  
            capability);
            baseUrl = "http://phy05:8080";
            driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
            driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
            driver.manage().window().setSize(new Dimension(1920, 1080));

I am using Linux and my tests are written in Java

like image 892
confusified Avatar asked Oct 11 '12 09:10

confusified


People also ask

What is remote WebDriver in selenium?

Selenium Remote Webdriver: It is an class that is used to execute the browser automation and to execute assessments in a distributed environment or on a remote computing device. In other words, It is a class that implements the WebDriver interface and this action is performed on the remote server.

What is the difference between Selenium Remote Control and selenium WebDriver?

Selenium WebDriver is purely object oriented API, whereas Selenium RC is less object oriented API. WebDriver is entirely based on object oriented programming languages like Java, C#, etc.

Can we write WebDriver driver new RemoteWebDriver ()?

We do write like: Webdriver driver = new ChromeDriver(); ChromeDriver driver = new ChromeDriver(); but not like this: RemoteWebdriver driver = new ChromeDriver():

Can we use RemoteWebDriver driver new ChromeDriver ()?

This driver instance has access to almost all the methods of WebDriver. This happens because every browser extends RemoteWebDriver and RemoteWebDriver implements WebDriver interface. We can still use those methods whenever it required for execution on respective browser only.


1 Answers

well. That's not a problem. I'd like to share how i resolved this issue. I got VM (virtual machine) with jdk installed and selenium server running on VM. VM has IP: 192.168.4.52 I connected to it through(RDC-remote desktop connection). Installed needed browser on it(firefox 15). Open browser. Disabled all the updates and other pop ups.

I've got selenium tests pack on my local machine. And I run them on my VM. Selenium setup is following:

import com.google.common.base.Function;
import com.thoughtworks.selenium.SeleneseTestBase;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Wait;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.core.io.support.PropertiesLoaderUtils;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.NoSuchElementException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;


public class BaseSeleniumTest extends SeleneseTestBase {
    static WebDriver driver;


    @Value("login.base.url")
    private String loginBaseUrl;

    @BeforeClass
    public static void firefoxSetUp() throws MalformedURLException {

//        DesiredCapabilities capability = DesiredCapabilities.firefox();
        DesiredCapabilities capability = DesiredCapabilities.internetExplorer();

        driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability);


//        driver = new FirefoxDriver();  //for local check

        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        driver.manage().window().setSize(new Dimension(1920, 1080));
    }
    @Before
    public void openFiretox() throws IOException {



        driver.get(propertyKeysLoader("login.base.url"));


    }


    @AfterClass
    public static void closeFirefox(){
        driver.quit();
    }

.....

this piece of code will run all the selenium tests on remote machine. in the string driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability); you simply should mention IP of your machine and this should work.

Hope this helps you.

like image 182
eugene.polschikov Avatar answered Oct 17 '22 10:10

eugene.polschikov