8

我正在 Windows 7(我也尝试过 Windows Server 2008)上设置 Selenium Grid 2 (selenium-server-standalone-2.1.0) 64 位。我在本地测试了 WebDriver,一切都很好。

我通过以下方式启动集线器:

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

为 FireFox 添加 webDriver 节点是可行的,但其他任何东西(例如 Google Chrome)都会引发 IllegalOperation 异常。

例如:

我尝试为 Chrome 添加一个节点:

java -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444 -browser browserName=chrome platform=windows version=12 -port 5556

当您转到http://localhost:4444/grid/console时,这显示为集线器上的一个节点

我添加代码来调用 webDriver,例如:

            DesiredCapabilities capability = new DesiredCapabilities();
            capability.SetCapability(CapabilityType.Platform, "windows");
            capability.SetCapability(CapabilityType.Version, "12");
            capability.SetCapability(CapabilityType.BrowserName, "chrome");

            IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"), capability);

我几乎立即得到一个例外:

{“找不到:{平台=windows,浏览器名称=chrome,版本=12}”}

似乎甚至没有找到该节点。我是新手,这是我在设置中错过的东西吗?(Internet Explorer 也是如此,更改版本似乎无济于事)。

我已经搜索了几个小时,但没有任何与异常匹配的东西似乎像我的问题一样普遍。

4

5 回答 5

2

文档确实记录了这一点,但方式不清楚。

java -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444 -browser browserName=chrome platform=windows version=12 -port 5556

需要是:

java -Dwebdriver.chrome.driver="C:\Users\Mike\Documents\Java Libraries\Selenium\chromedriver\chromedriver.exe" -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444/grid/register -browser "browserName=chrome,platform=WINDOWS,version=12" -port 5556

中心 URL中缺少您grid/register。最重要的是,如果您要向它们传递多个参数,-browser它们需要用引号括起来并用逗号分隔,不带空格。webdriver.chrome.driver您还需要以与我类似的方式传递该属性。

您可以通过转到浏览器并点击以下命令来检查它是否已成功注册:

http://localhost:4444/grid/console

作为旁注,这是您可以声明所需功能的另一种方式:

DesiredCapabilities dc = DesiredCapabilities.chrome();
dc.setVersion("12");
dc.setPlatform(Platform.WINDOWS);
于 2011-09-06T11:58:02.693 回答
2

IllegalOperation Exception {"cannot find : {platform=windows, browserName... 是由于没有匹配能力引起的(它永远不会到达节点)。

如果我在启动明确说明平台和浏览器的节点时使用配置文件,例如:

{
"capabilities":
        [
                {
                        "browserName":"firefox",
                        "maxInstances":1
                },
                {
                        "browserName":"chrome",
            "platform":"WINDOWS",
                        "maxInstances":1
                },
                {
                        "browserName":"internet explorer",
                        "version":"9",
                        "platform":"WINDOWS",
                        "maxInstances":1
                }
        ],
"configuration":
        {
                "cleanUpCycle":2000,
                "timeout":30000,
                "proxy":"org.openqa.grid.selenium.proxy.WebDriverRemoteProxy",
                "maxSession":5,
                "url":"http://[myIP]/wd/hub",

        }
}

并使用以下行启动集线器:
java -jar selenium-server-standalone-2.2.0.jar -role webdriver -nodeConfig myconfig.json -hub http://[myIP]:4444/grid/register

并创建如下功能:

DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability(CapabilityType.Platform, "WINDOWS");
capability.SetCapability(CapabilityType.BrowserName, "internet explorer");

然后测试工作(顺便说一句,您必须将 IE 中的所有区域设置为受保护)。
注意,我确实注意到 windows 在 WINDOWS 中是大写的,否则您会收到错误消息。

于 2011-07-31T09:55:01.193 回答
1
Lets consider Hub running on Machine-A whose IPAddress is = 192.168.10.10 default port no. 4444.
Lets Node running on Machine-B whose IPAddress is = 192.168.10.20.
Lets consider operating System on HUB and Node is installed on drive C:\ (C-Drive). 
create a folder named selenium on c:\ as c:\selenium.
keep binaries of IExplorer.exe, chromeDriver.exe and Selenium-Standalone-server2.10.0.jar. (on both machine A and B).

configuring HUB on Machine-A
1- open Command prompt 
2- go to folder selenium using 
         i type cd\ then enter
         ii  type c:  then enter
         iii c:> cd selenium then enter
3- java -jar selenium-server-standalone-2.20.0.jar -role hub

Configuring NOde on Machine - B
1- open Command prompt 
2- go to folder selenium using 
         i type cd\ then enter
         ii  type c:  then enter
         iii c:> cd selenium then enter
3- java -jar selenium-server-standalone-2.20.0.jar -role node -hub http://192.168.10.10:4444/grid/register  -port 5560 -browser  browserName=chrome,maxInstance=4,platform=WIN8_1 -Dwebdriver.ie.driver=c:\selenium\ChromeDriver.exe

your node will get register with Hub on port 5560.

Test Case will become as- 

package testCase;

import static org.junit.Assert.*;

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

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class Avinash_Google_Chrome 
{

    WebDriver driver;
    String baseUrl , nodeUrl;

    @Before
    public void setUp() throws Exception 
    {
        nodeUrl = "http://192.168.10.20:5560/wd/hub"; //Machine-A IPAdress  
                                                     with Port No.          

        DesiredCapabilities capability = DesiredCapabilities.chrome();

        driver = new RemoteWebDriver(new URL(nodeUrl),capability);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.MINUTES);
    }

    @After
    public void tearDown() throws Exception 
    {
        driver.quit();
    }

    @Test
    public void test() throws InterruptedException
    {

        driver.get("https://www.google.co.in");     
        Thread.sleep(3000);     
        driver.findElement(By.linkText("Gmail")).click();
        Thread.sleep(3000); 
        driver.findElement(By.id("Email")).sendKeys("aavinashpande@gmail.com");

        driver.findElement(By.id("Passwd")).sendKeys("********");

        driver.findElement(By.id("signIn")).click();

        Thread.sleep(6000);
    }

}
于 2015-04-01T10:14:57.473 回答
0

你可以设置

driver.quit();

在脚本的结尾

于 2014-12-10T16:12:13.573 回答
0

尝试降低chrome版本和操作系统的条件:

您注册节点的代码如下

java -jar selenium-server-standalone-2.1.0.jar -role webDriver -hub http://127.0.0.1:4444 -browser browserName=chrome -port 5556

并创建您的浏览器:

DesiredCapabilities capability = new DesiredCapabilities();
capability.SetCapability(CapabilityType.BrowserName, "chrome");

或者

DesiredCapabilities capability = DesiredCapabilities.chrome();

可能是您的 Chrome 在您没有注意到的情况下更新了,或者版本号“12”与您安装的版本不完全匹配。如果它在这些条件下运行,请尝试使用新组合添加“Platform=WINDOWS”和“Version”CapabilityTypes。

于 2011-09-06T11:46:21.153 回答