2014-11-24 3 views
0

Я тестирование Селен WebDriver с сеткой, и я застрявших с ошибкой:WebDriver 2.45.0 & Firefox ESR 31.5.0 :: WebDriverException: Невозможно связаться с блокировки порта 7054 в 45000 мс

org.openqa.selenium.WebDriverException: Unable to bind to locking port 7054 within 45000 ms 
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37' 
System info: host: 'XXXXX', ip: 'XXXXX', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_45' 
Driver info: driver.version: FirefoxDriver 
Command duration or timeout: 47.71 seconds 
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37' 
System info: host: 'XXXXX', ip: 'XXXXX', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_45' 
Driver info: org.openqa.selenium.remote.RemoteWebDriver 

Информация о моей конфигурации:

  • селен-сервера автономный-2.45.0
  • браузер: Firefox ESR 31.5.0
  • Я запускать тесты с eclipe и TestNG
  • Конфигурация
  • Hub: { "host": null, "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "prioritizer": null, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "throwOnCapabilityNotPresent": true, "nodePolling": 5000, "cleanUpCycle": 5000, "timeout": 300000, "browserTimeout": 0, "maxSession": 100, "jettyMaxThreads":-1 }

  • У меня есть три узла с конфигурацией, как это:

    { "capabilities": [ { "browserName": "firefox", "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "chrome", "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "iexplorer", "maxInstances": 1, "seleniumProtocol": "WebDriver" } ], "configuration": { "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "maxSession": 10, "port": 5555, "host": ip, "register": true, "registerCycle": 5000, "hubPort": 4444, "hubHost": ip } }

Мой вопрос заключается в: какие могут быть причины этой ошибки? На данный момент я даже не понимаю, почему есть блокирующий порт 7054, даже если мои порты конфигурации концентратора и узлов различны.

Спасибо за ваше время и ответы.

UPDATE:

@BeforeMethod и @AfterMethod функции

@BeforeMethod 
public void setUp(){ 

    StringBuilder text = customAppender.createInstance(); 
    customAppender.setBuilder(text);  

    WebDriver driver = LocalDriverFactory.createInstance("firefox"); 
    LocalDriverManager.setWebDriver(driver); 
    customAppender.append("Opened webDriver instance = " + driver.hashCode()); 
} 

@AfterMethod 
public void shutDown(){ 
    WebDriver driver = LocalDriverManager.getDriver(); 
    if (driver != null) { 
     mainFunctions.log("Closed webDriver instance = " + driver.hashCode(), 2); 
     driver.quit(); 
    } 
} 

@test методы:

@Test(dataProvider = "getData") 
public static void test(String browserName, String link) throws MalformedURLException, InterruptedException { 
     WebDriver driver = LocalDriverManager.getDriver(); 
     customAppender.append("Thread id = " + Thread.currentThread().getId()); 
     customAppender.append("Hashcode of webDriver instance = " + driver.hashCode()); 
     driver.get(link); 
     customAppender.append(driver.getTitle()); 
     Thread.sleep(20000); // for testing purposes 
     customAppender.append("Test 1, time: " + new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime())); 
     mainFunctions.log(customAppender.printOutString(), 0); 
    } 

@Test(dataProvider = "getData") 
public static void test2(String browserName, String link) throws MalformedURLException, InterruptedException { 
     WebDriver driver = LocalDriverManager.getDriver(); 
     customAppender.append("Thread id = " + Thread.currentThread().getId()); 
     customAppender.append("Hashcode of webDriver instance = " + driver.hashCode()); 
     driver.get(link); 
     customAppender.append(driver.getTitle()); 
     Thread.sleep(20000); // for testing purposes 
     customAppender.append("Test 2, time: " + new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime())); 
     mainFunctions.log(customAppender.printOutString(), 0); 
    } 

@DataProvider

@DataProvider(parallel=true) 
    public Object[][] getData(){ 
     Object[][] d = new Object[4][2]; 
     // dummy data 

     d[0][0] = "firefox"; 
     d[0][1] = "http://www.google.com"; 

     d[1][0] = "firefox"; 
     d[1][1] = "http://www.google.com"; 

     d[2][0] = "firefox"; 
     d[2][1] = "http://www.google.com"; 

     d[3][0] = "firefox"; 
     d[3][1] = http://www.google.com"; 

     return d; 
    } 

testNG.xml файл

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite" parallel="methods" thread-count="20"> 
    <test name="Test"> 
     <classes> 
      <class name="ts.testWebdriver" /> 
     </classes> 
    </test> <!-- Test --> 
</suite> <!-- Suite --> 
+0

только что вернулся в эту ситуацию. Есть ли другие предложения? :) – Rollaz

ответ

1

причиной может быть то, что ваш экземпляр светлячок с помощью WebDriver работает на этом конкретном порту на удаленном компьютере. Убейте экземпляр ff и выполните тест. Предоставьте driver.quit() в конце тестового примера, чтобы избежать этих сбоев.

+0

Спасибо за ваш ответ;) У меня есть driver.quit(); в конце тестового примера, но также есть if: if (driver! = null) Я проверю, может ли это быть возможной проблемой. Также добавлено больше информации на главный пост, чтобы посмотреть, что я здесь делаю :) – Rollaz

+0

Является ли 'WebDriver driver = LocalDriverManager.getDriver();' создание нового экземпляра драйвера? Если да, пожалуйста, посмотрите на метод shutDown, где вы пытаетесь убить новый драйвер, полученный из строки 1 выключения. Благодарю. –

+0

Нет, 'LocalDriverManager.getDriver()' возвращает WebDriver, например: 'общественного класса LocalDriverManager { частных статических ThreadLocal WebDriver = новый ThreadLocal (); public static WebDriver getDriver() { return webDriver.get(); } public static void setWebDriver (драйвер WebDriver) { webDriver.set (driver); } } ' Instance создается с' LocalDriverFactory.createInstance ("светлячок"); ' – Rollaz

0

Итак, у меня была проблема с WebDriver, но я не мог исправить это. Обнаружен обходной путь. Я создал нового пользователя Windows и провел тесты от этого пользователя. Кажется, сейчас. Удачи.

+0

Просто интересно, как это может быть связано с пользователями окна .. странно, спасибо за предложение :) – Rollaz