2016-08-22 5 views
-3

Я пытаюсь запустить селеновую сетку, зарегистрировавшись узел из VirtualBox. Всякий раз, когда я пытаюсь выполнить testng.xml для параллельного запуска тестов, я получаю следующую ошибку: FAILED CONFIGURATION: @BeforeTest beforeTest, как решить эту проблему.
Я убедился, что все необходимые файлы jar добавлены. Селен-концентратор работает, а узел также зарегистрирован в концентраторе.@BeforeTest beforeTest («WIN8», «firefox», «http://10.xxx:4467/wd/hub») java.net.MalformedURLException: нет протокола: remoteurl

package com.example.selenium; 

    import org.testng.annotations.Test; 

    import java.net.MalformedURLException; 
    import java.net.URL; 
    import java.util.concurrent.TimeUnit; 

    import org.openqa.selenium.By; 
    import org.openqa.selenium.Platform; 
    import org.openqa.selenium.remote.DesiredCapabilities; 
    import org.openqa.selenium.remote.RemoteWebDriver; 
    import org.testng.annotations.BeforeTest; 
    import org.testng.annotations.Parameters; 

    public class ParllelTest { 
//RemoteWebDriverInstance 
     static RemoteWebDriver driver; 
    //Checking the type of browser and platform registered 

     @BeforeTest (alwaysRun=true) 
     @Parameters({"platform","browserName","remoteurl"}) 
     public void beforeTest(String platform,String browserName,String remoteurl) throws MalformedURLException { 

     DesiredCapabilities cap = null; 


      if(browserName.equals("firefox")) { 

       cap=new DesiredCapabilities().firefox(); 
      cap.setPlatform(Platform.VISTA); 
      cap.setBrowserName("firefox"); 
      } 

      else if(browserName.equals("chrome")) 
      { 
       cap=new DesiredCapabilities().chrome(); 
       cap.setBrowserName("chrome"); 
       cap.setPlatform(Platform.LINUX); 
      } 


      driver=new RemoteWebDriver(new URL("remoteurl"),cap); 
     } 
//navigating to particular page 
     @Test 
     public void googlesearch() 
     { 


      driver.get("http://www.gmail.com"); 
      driver.findElement(By.name("username")).sendKeys("xxxxx"); 
      driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
      driver.findElement(By.name("password")).sendKeys("xxxxx"); 
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
      driver.findElement(By.id("click")).click(); 
     } 
    } 

Iam, вставляющий соответствующий xml-файл, откуда iam пытается запустить тест параллельно.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="TestSuite" thread-count="4" parallel="tests" > 
<test verbose="3" name="Vista"> 
<paramaters> 
    <parameter name="platform" value="VISTA"/> 
    <parameter name="browserName" value="firefox"/> 
    <parameter name="remoteurl" value="http://10.x.x.x:5557/wd/hub"/> 
</paramaters> 
<classes> 
    <class name="com.example.selenium.ParllelTest"> 
    <method> 
     <include name="googlesearch"/> 
     </method> 
    </class> 
</classes> 
</test> 
<test verbose="3" name="ubuntu"> 
<paramaters> 
    <parameter name="platform" value="WIN8"/> 
    <parameter name="browserName" value="firefox"/> 
    <parameter name="remoteurl" value="http://10.x.x.x:4467/wd/hub"/> 
</paramaters> 
<classes> 
    <class name="com.example.selenium.ParllelTest"> 
     <method> 
     <include name="googlesearch"/> 
     </method> 
    </class> 
</classes> 
</test> 

</suite> 
+0

Что у вас есть в методе, аннотированном с @BeforeTest. –

+0

Iam, вставляющий код в мой вопрос –

+0

Пожалуйста, не уменьшайте iam абсолютного новичка на селен. Я действительно застрял здесь, долгое время нуждаясь в помощи. –

ответ

0

java.net.MalformedURLException: no protocol: remoteurl

driver=new RemoteWebDriver(new URL("remoteurl"),cap); 

Глядя на исключение и эта линия выглядит как ваш remoteurl параметр не получает декодируется к его значению т.е. http://10.x.x.x:4467/wd/hub. Скорее, он передается как строка «remoteurl», которая, очевидно, не может быть проанализирована в url.

Только для подтверждения этого, попробуйте поставить значение remoteurl в приведенной выше строке коды, как:

driver=new RemoteWebDriver(new URL("http://10.x.x.x:4467/wd/hub"), cap) 

Это, безусловно, работать, то это вопрос, почему remoteurl в настоящее время передаются в виде строки вместо переменная, если работает над линией, а затем попробуйте передать remoteurl без кавычек, как показано ниже:

driver=new RemoteWebDriver(new URL(remoteurl), cap) 

Хотя я не уверен на 100% о remoteurl или «remoteurl», но давайте попробуем. для первого пункта я на 100% уверен, что новый URL-адрес получает «remoteurl» вместо «http://10.x.x.x:4467/wd/hub».

+0

Спасибо. Но использование «http://10.xxx:4467/wd/hub» может выполняться на одной машине, но я хочу параллельно выполнять тесты на обеих машинах с IP: «http://10.xxx:4467/wd/hub "и" http://10.xxx:5557/wd/hub " –