0

我有一個簡單的測試來在Chrome中打開launch_url。但我收到錯誤,因爲無法檢索任何新的會話。Nightwatch:從硒服務器檢索新會話時出錯

另外我想知道如何使用夜間沒有在網格中運行。只是一個獨立的實例。

下面是我用過的配置。

{ 
    "src_folders" : ["tests"], 
    "output_folder" : "reports", 
    "custom_commands_path" : "", 
    "custom_assertions_path" : "", 
    "page_objects_path" : "", 
    "globals_path" : "", 

    "selenium" : { 
    "start_process" : false, 
    "server_path" : "./bin/selenium-server-standalone-3.4.0.jar", 
    "log_path" : "", 
    "port" : 4444, 
    "cli_args" : { 
     "webdriver.chrome.driver" : "./bin/chromedriver.exe", 
     "webdriver.gecko.driver" : "", 
     "webdriver.edge.driver" : "" 
    } 
    }, 

    "test_settings" : { 
    "default" : { 
     "launch_url" : "http://127.0.0.1", 
     "selenium_port" : 4444, 
     "selenium_host" : "127.0.0.1", 
     "silent": true, 
     "screenshots" : { 
     "enabled" : false, 
     "path" : "" 
     }, 
     "desiredCapabilities": { 
     "browserName": "firefox", 
     "marionette": true 
     } 
    }, 

    "chrome" : { 
     "desiredCapabilities": { 
     "browserName": "chrome", 
     "javascriptEnabled": true, 
     "acceptSslCerts": true 
     } 
    }, 

    "edge" : { 
     "desiredCapabilities": { 
     "browserName": "MicrosoftEdge" 
     } 
    } 
    } 
} 

當我使用命令nightwatch --env鉻或者乾脆nightwatch運行nightwatch,它給了我下面的錯誤

[Test1] Test Suite 
====================== 

Running: Demo test 
http://127.0.0.1 

Error retrieving a new session from the selenium server 

Connection refused! Is selenium server started? 
{ status: 13, 
    value: 
    { message: 'Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Test1, browserName=chrome, javascriptEnabled=true, platform=ANY}]', 
    class: 'org.openqa.grid.common.exception.GridException' } } 

我的測試看起來像

module.exports = { 
    'Demo test' : function (browser) { 
    console.log(browser.launchUrl); 
    browser 
     .url(browser.launchUrl) 
     .end(); 
    } 
}; 

我可以請參閱啓動網址已登錄到控制檯,但瀏覽器未啓動。我正在使用最新的jar文件和chromedriver二進制文件。

+0

你嘗試設置「start_process」:false,爲「start_process」:true,? – QualiT

回答

1

我剛纔這給了一個嘗試,這裏就是我想通了

在你selenium配置部分我看到你已經設置start_processfalse

"selenium" : { 
    "start_process" : false, 
    "server_path" : "./bin/selenium-server-standalone-3.4.0.jar", 
    "log_path" : "", 
    "port" : 4444, 
    "cli_args" : { 
     "webdriver.chrome.driver" : "./bin/chromedriver.exe", 
     "webdriver.gecko.driver" : "", 
     "webdriver.edge.driver" : "" 
    } 
}, 

當你擁有的價值爲false,你基本上可以擺脫這一節本身的(因爲它不會在所有根據您的配置中使用)

你基本上是告訴nightwatch那它不應該嘗試自行啓動硒服務器,但它應該只是連接到端口4444運行硒服務器(從test_settingsdefault部分獲得這些值

"default" : { 
    "launch_url" : "http://www.google.com", 
    "selenium_port" : 4444, 
    "selenium_host" : "127.0.0.1", 
    "silent": false, 
    "screenshots" : { 
    "enabled" : false, 
    "path" : "" 
    }, 
    "desiredCapabilities": { 
    "browserName": "firefox", 
    "marionette": true 
    } 
}, 

到目前爲止我們很好。所以在你運行nightwatch命令之前,我猜你已經啓動了硒服務器,但處於不正確的模式。

我想你使用下面的命令

java -jar selenium-server-standalone-3.4.0.jar -role hub

這將導致開始Hub啓動服務器。集線器就像是manager。它不能完成它自己的工作(啓動瀏覽器,打開網址,輸入文本,點擊鏈接等)。它需要node可用,以便它可以將其所有工作路由到節點。

錯誤Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Nightwatchtest, browserName=firefox, javascriptEnabled=true, platform=ANY}]'本質上是Selenium Grid告訴你的方式,即你沒有在任何節點上連接它來將流量路由到。

因此,爲了解決您的問題,您可以執行下列操作之一:

  1. 在獨立模式下啓動硒服務器[既不是集線器或節點],使用命令java -jar selenium-server-standalone-3.4.0.jar(或)
  2. 翻轉國旗start_processtrue在您的配置文件,這將導致夜服開始和停止自己的服務器。
相關問題