【问题标题】:@BeforeTest beforeTest("WIN8", "firefox", "http://10.x.x.x:4467/wd/hub") java.net.MalformedURLException: no protocol: remoteurl@BeforeTest beforeTest(“WIN8”,“firefox”,“http://10.x.x.x:4467/wd/hub”)java.net.MalformedURLException:无协议:remoteurl
【发布时间】:2016-08-22 11:04:48
【问题描述】:

我正在尝试通过从 VirtualBox 注册一个节点来运行 Selenium Grid。每当我尝试执行 testng.xml 以并行运行测试时,都会收到以下错误:FAILED CONFIGURATION: @BeforeTest beforeTest 如何解决此问题。
我确保添加了所有必要的 jar 文件。 Selenium 集线器正在运行,并且节点也已注册到集线器。

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

我正在粘贴相应的 xml 文件,我正在尝试并行运行测试。

<?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>

【问题讨论】:

  • 你在用@BeforeTest注释的方法中有什么。
  • 我将代码粘贴到我的问题中
  • 请不要对 selenium 的绝对初学者投反对票。我真的卡在这里很久了,需要帮助。
  • 否决票是衡量您的问题对社区有用性的衡量标准,而不是衡量您值得同情的程度。我不是一个反对者,但我建议您查看有关如何创建 minimal reproducible example 的说明,然后再查看 edit 您的问题以集中注意力。

标签: xml testng virtualbox selenium-grid


【解决方案1】:

java.net.MalformedURLException:无协议: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”。

【讨论】:

猜你喜欢
  • 2018-03-16
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 2017-11-14
相关资源
最近更新 更多