2012-10-11 3 views
9

J'ai le selenium-server-standalone.jar en cours d'exécution sur ma machine locale, et les tests que je veux exécuter sont compilés sur ma machine distante, mais je n'ai aucune idée de comment connecter les tests à la machine cela va exécuter le navigateur. Toute aide appréciée.Configuration à distance Selenium Webdriver

Mise à jour: Sur ma machine locale (celle que je vais courir le navigateur) J'ai couru

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

sur ma machine distante (que je vais exécuter les tests de) J'ai couru

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

mon code contient les éléments suivants:

@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)); 

J'utilise Linux et mon t les valeurs sont écrites en Java

+0

Dans quelle langue sont écrits vos tests de sélénium? –

+0

Mes tests sont écrits en Java – confusified

+1

Je ne recommanderais pas de changer le implicitWait. Le laisser à 0 par défaut va vous donner un comportement plus typique. La plupart des gens implémentent un FluentWait tel que WebDriverWait pour vous donner des temps d'attente plus longs. Évitez de le changer à '20' secondes. – djangofan

Répondre

7

bien. Ce n'est pas un problème. J'aimerais partager comment j'ai résolu ce problème. J'ai reçu VM (machine virtuelle) avec jdk installé et le serveur sélénium fonctionnant sur VM. VM a IP: 192.168.4.52 Je me suis connecté à travers (RDC-connexion de bureau à distance). Installé le navigateur nécessaire dessus (firefox 15). Navigateur ouvert. Désactivé toutes les mises à jour et autres pop ups.

J'ai des tests de sélénium sur ma machine locale. Et je les lance sur ma VM. configuration Sélénium suit:

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(); 
    } 

..... 

ce morceau de code sera exécuté tous les tests de sélénium sur la machine distante. dans la chaîne driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability); vous devez simplement mentionner IP de votre machine et cela devrait fonctionner.

J'espère que cela vous aide.

+0

Est-ce que le serveur seleniuim fonctionne sur la machine avec le navigateur ou celui avec les tests? Mes tests sont exécutés à partir de la ligne de commande sur une machine que je ssh, et mon navigateur est sur ma machine locale – confusified

+1

dans mon approche (sur le projet en cours) serveur sélénium exécuté sur la VM (machine distante) et le navigateur est sur VM (remote machine) ainsi. L'ensemble de test est sur ma machine locale mais je vais le commettre dans le référentiel, ajouter une tâche à Hudson-Jenkins pour les retirer du référentiel et les exécuter à distance. Cordialement –

+0

Vous pouvez le faire en utilisant le conteneur docker pour le navigateur Chrome. Référez-vous à http://underthehood.meltwater.com/blog/2016/11/09/using-docker-with-selenium-server-to-run-your-browser-tests/ et https://github.com/SeleniumHQ/docker-sélénium – vikramvi