0

グリッドを使用して Selenium リモート Web ドライバーをテストしていますが、エラーが発生しました。

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 でテストを実行します
  • ハブ構成: { "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 }

  • 次のような構成の 3 つのノードがあります。

    { "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 がロックされている理由がわかりません。

お時間とご回答ありがとうございます。

アップデート:

@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(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(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 -->
4

2 に答える 2

1

原因は、webdriver を介した Firefox インスタンスがリモート マシンの特定のポートで実行されている可能性があります。ff インスタンスを強制終了し、テストを実行します。これらの失敗を避けるために、テスト ケースの最後に driver.quit() を指定してください。

于 2014-11-24T14:59:16.673 に答える
0

わかりましたので、WebDriver でこの問題が発生しましたが、修正できませんでした。しかし、回避策が見つかりました。新しい Windows ユーザーを作成し、そのユーザーからテストを実行しました。今は大丈夫そうです。幸運を。

于 2015-01-16T14:09:18.653 に答える