2012-10-11 17 views
9

Ich habe den Selen-Server-standalone.jar auf meinem lokalen Rechner ausgeführt wird, und die Tests möchte ich auf meinem Remote-Rechner kompiliert laufen, aber ich habe keine Ahnung, wie ich die Tests an der Maschine verbinden machen Dadurch wird der Browser ausgeführt. Jede Hilfe wird geschätzt.Selen WebDriver Remote-Setup

Update: auf meinem lokalen Rechner (die, die ich auf dem der Browser ausgeführt wird) Ich lief

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

auf meinem Remote-Maschine (die ich die Tests laufen aus) lief ich

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

meinen Code enthält folgende Komponenten:

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

ich Linux und mein t bin mit ests sind in Java

+0

Welche Sprache in Ihrem Selen Tests geschrieben werden? –

+0

Meine Tests sind in Java geschrieben – confusified

+1

Ich würde nicht empfehlen, die implicitWait zu ändern. Wenn Sie den Wert 0 beibehalten, erhalten Sie ein typischeres Verhalten. Die meisten Leute implementieren ein FluentWait wie WebDriverWait, um Ihnen längere variable Wartezeiten zu geben. Vermeiden Sie es, es in '20' Sekunden zu ändern. – djangofan

Antwort

7

gut geschrieben. Das ist kein Problem. Ich möchte gerne mitteilen, wie ich dieses Problem gelöst habe. Ich habe VM (virtuelle Maschine) mit jdk installiert und Selen Server läuft auf VM. VM hat IP: 192.168.4.52 Ich habe es über (RDC-Remote-Desktop-Verbindung) verbunden. Installierter benötigter Browser (Firefox 15). Browser öffnen. Deaktiviert alle Updates und andere Pop-ups.

Ich habe Selen Tests packen auf meinem lokalen Rechner. Und ich führe sie auf meiner VM. Selen Setup folgt:

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

..... 

dieses Stück Code wird alle Selen Tests auf Remote-Rechner laufen. im String driver = new RemoteWebDriver(new URL("http://192.168.4.52:4444/wd/hub"), capability); Sie einfach IP Ihre Maschine erwähnen sollte, und dies sollte funktionieren.

Hoffe das hilft dir.

+0

So läuft der seleniuim-Server auf dem Rechner mit dem Browser oder der mit den Tests? Meine Tests werden von der Kommandozeile auf einer Maschine laufen ich in ssh, und mein Browser auf meinem lokalen Rechner – confusified

+1

in meinem Ansatz (auf dem aktuelle Projekt) Selen-Server läuft auf dem VM (Remote-Machine) und Browser auf VM (remote Maschine). Test-Set ist auf meinem lokalen Rechner, aber ich werde es in das Repository einbinden, Aufgabe zu Hudson-jenkins hinzufügen, um sie aus dem Repository zu holen und remote laufen zu lassen. Grüße –

+0

Sie können dies tun, indem Sie den Andock-Container für den Chrome-Browser verwenden. Siehe http://underthehood.meltwater.com/blog/2016/11/09/using-docker-with-selenium-server-to-run-your-browser-tests/ und https://github.com/SeleniumHQ/Docker-Selen – vikramvi