Selenium Java-процесс, вызванный из c #, не запускается должным образом на сервере сборки CCNET - PullRequest
0 голосов
/ 20 марта 2009

Я настраиваю сервер CCNET для запуска тестов Selenium. В моем тестовом коде я использую следующее, чтобы запустить сервер Selenium RC, если он не работает:

var proc = new Process();
proc.StartInfo.WorkingDirectory = Path.Combine(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName, @"..\..\..\..\..\lib\SeleniumRC\selenium-server-1.0-beta-2");
proc.StartInfo.FileName = "java"; //have also tried with "java.exe"
proc.StartInfo.Arguments = @"-jar selenium-server.jar -multiWindow -trustAllSSLCertificates -firefoxProfileTemplate ""..\Firefox Profiles\Relaxed Security""";
proc.StartInfo.UseShellExecute = true;
proc.Start();

Это прекрасно работает на моей машине для разработки. Однако, когда я запускаю его из CCNET.exe (в контексте пользователя), я вижу, что вместо выполнения процесса java.exe появляется окно обозревателя для «c: \ windows \ java». Я думаю, что мои настройки пути испорчены, но я не уверен, как. Вы можете помочь?

Ответы [ 4 ]

2 голосов
/ 16 февраля 2010

Я сделал это, чтобы запустить сервер в фоновом режиме:

// Start the java server
Process seleniumServer;
String javaFileLocation = @"C:\Program Files\Java\jre6\bin\java.exe";
String jarFileLocation = @"C:\SeleniumRC\selenium-remote-control-1.0.1\selenium-server-1.0.1\selenium-server.jar";
seleniumServer = new Process();
seleniumServer.StartInfo.FileName = javaFileLocation;
seleniumServer.StartInfo.Arguments = "-jar " + jarFileLocation;
seleniumServer.StartInfo.WorkingDirectory = jarFileLocation.Substring(0, jarFileLocation.LastIndexOf("\\"));
seleniumServer.StartInfo.UseShellExecute = true;
seleniumServer.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
seleniumServer.Start();

тогда просто сделал

seleniumServer.Kill()

чтобы остановить это после того, как все прошло хорошо.

Не уверен, что это поможет ситуации с CCNET, но может помочь людям, которые ищут это в будущем?

2 голосов
/ 20 марта 2009

Вы пытались зайти в этот рабочий каталог в командной строке в контексте пользователя, в котором вы его запускаете, и попробовать командную строку?

Если настройки пути перепутаны, вы можете изменить их, щелкнув правой кнопкой мыши Мой компьютер, свойства, Дополнительно, Переменные среды ...

1 голос
/ 05 марта 2010

Класс SeleniumProcess

public class SeleniumProcess
    {
        private static Process _seleniumServer;

        public static void Start()
        {
            _seleniumServer = new Process
                                  {
                                      StartInfo =
                                          {
                                              FileName = "java",
                                              Arguments =
                                                  "-jar ../../../References/" +
                                                  "selenium-remote-control-1.0.3/" +
                                                  "selenium-server-1.0.3/" + "selenium-server.jar -port 4444"
                                          }
                                  };
            _seleniumServer.Start();
        }

        public static void Stop()
        {
            _seleniumServer.Kill();
        }
    }

Настройка региона / Снос

    [SetUp]
    public void SetupTest()
    {
        SeleniumProcess.Start();
    }

    [TearDown]
    public void TeardownTest()
    {
        try
        {
            _selenium.Stop();
        }
        catch (Exception)
        {
            // Ignore errors if unable to close the browser
        }
        SeleniumProcess.Stop();
        Assert.AreEqual("", _verificationErrors.ToString());
    }

    #endregion
1 голос
/ 02 июня 2009

я использую это

публичный класс Навегадор: DefaultSelenium { частный статический int contadorPorta = 4444;

    private int porta;

    private delegate string OperacaoSelenium();

    // Variável para a URL Base
    private string urlBase;
    public string UrlBase
    {
        get { return urlBase; }
    }

    public Navegador(string urlBase)
        : base("localhost", contadorPorta, "*firefox", urlBase) // ou *firefox ou *chrome *safari, *opera , *iexplore etc.
    {
        this.urlBase = urlBase;

        porta = Navegador.contadorPorta;
        // Deve sempre abrir o Selenium RC-Server antes (instância única - Singleton)
        this.IniciarSeleniumRCServer();
        Navegador.contadorPorta++;

        this.Start();
        this.Open("/");
    }

    /// <summary>
    /// Inicia o Selenium RC-Server, que é o arquivo JAR que vem no pacote do Selenium RC
    /// </summary>
    private void IniciarSeleniumRCServer()
    {
        string seleniumParameters = "..\\..\\..\\ExternalLibraries\\selenium-remote-control-1.0-beta-1\\selenium-server-1.0-beta-1\\selenium-server.jar -Dhttp.proxyHost=10.100.100.24 -port " + porta + "";
        procSeleniumServer = System.Diagnostics.Process.Start("java.exe", " -jar " + seleniumParameters);
        System.Threading.Thread.Sleep(1000);
    }

работает хорошо .. но не под прокси -.- '

...