首页 文章

如何使用MAC作为集线器和Windows作为Nod在网格中运行chrome浏览器?

提问于
浏览
0

集线器:MAC 64位Nod:Windows 32位

无法使用Selinum网格MAC作为集线器和Windows作为点头运行Chrome浏览器?

使用下面的代码我收到一个错误(驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置;有关更多信息,请参阅http://code.google.com/p/selenium/wiki/ChromeDriver . 最新版本可以从http://code.google.com/p/chromedriver/downloads/list命令持续时间或超时下载:668毫秒)

public void chromeWindows() throws MalformedURLException{

System.setProperty("webdriver.chrome.driver", "/Users/vinayakkhatate/Desktop/jar/chromedriver2");
ChromeOptions opt = new ChromeOptions();
opt.setBinary("C:/Users/user/AppData/Local/Google/Chrome/Application/chrome.exe");


DesiredCapabilities capabilies = DesiredCapabilities.chrome();
capabilies.setBrowserName("chrome");
capabilies.setPlatform(Platform.VISTA);


driver = new RemoteWebDriver(new URL("http://10.0.11.118:5566/wd/hub"), capabilies);
driver.get(baseUrl);
System.out.println(driver.getTitle());

driver.close();
driver.quit();

}

3 回答

  • 0

    我有解决方案从Mac机器运行Chrome浏览器到Windows Vista(在Windows Vista机器下载并保存chromedriver)

    使用以下命令在Mac中启动集线器

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

    使用以下命令在Windows中启动节点

    java -jar selenium-server-standalone-2.33.0.jar -role node -hub http://localhost:4444/grid/register -maxSession 15 -browser browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=5 -Dwebdriver.chrome.driver=pathtochromedriver\chromedriver.exe
    

    现在在Mac机器上的eclipse中编写代码

    DesiredCapabilities capabilies = DesiredCapabilities.chrome();
    capabilies.setBrowserName("chrome");
    capabilies.setPlatform(Platform.ANY);
    
    driver = new RemoteWebDriver(new URL("http://<ip address of windows machine>:5555/wd/hub"), capabilies);
    
  • 4

    实际上,chromedriver.exe必须存储在Windows节点上 . 我通过在我的测试文件夹中创建子文件夹 /lib 来实现它,我在其中存储了chromedriver和所有其他与selenium网格相关的东西 . 稍后,在运行节点时,请执行以下操作:

    java -jar lib/selenium-server-standalone-2.28.0.jar -role node -hub http://localhost:4444/grid/register -maxSession 15 -browser browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=15 -Dwebdriver.chrome.driver=lib\chromedriver.exe
    

    特别注意-D开关:

    -Dwebdriver.chrome.driver=lib\chromedriver.exe
    

    多数民众赞成我如何设置chromedriver.exe路径 . 注意相对路径,所以我不必关心工具运行的绝对路径的位置 . 希望能帮助到你

    EDIT 显然,集线器和节点计算机应该可以通过IP访问 . 例如,我的工作PC在我们的内部网络中有IP 10.131.7.11 ,所以如果这是 hub 计算机,那么节点设置将是这样的:

    java -jar lib/selenium-server-standalone-2.28.0.jar -role node -hub http://10.131.7.11:4444/grid/register -maxSession 15 -browser browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=15 -Dwebdriver.chrome.driver=lib\chromedriver.exe
    

    请注意,localhost已更改为集线器的IP . 所以接下来的步骤是:

    • 将集线器和节点设置为在同一网络上并可通过IP地址访问

    • 在mac机器上运行集线器

    • 在vista上运行节点,指向集线器的IP地址

    • 交叉你的手指:)

    • 并尝试再次运行chrome

    EDIT2 这就是我运行chrome的方式:

    if (System.getProperty("os.name").contains("Windows")) {
            System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "chromedriver.exe");
        } else {
            System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "chromedriver");
        }
    
      capabilities = DesiredCapabilities.chrome();
      capabilities.setCapability("chrome.switches", Arrays.asList("--start-maximized"));
    
      driver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub"), capabilities);
    
  • 1

    使用以下命令在Mac中启动集线器

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

    使用以下命令在Windows中启动节点

    java -jar selenium-server-standalone-2.33.0.jar -role node -hub http://localhost:4444/grid/register -maxSession 15 -browser browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=15 -Dwebdriver.chrome.driver=pathtochromedriver\chromedriver.exe
    

    从下面的位置下载chromedriver

    https://code.google.com/p/chromedriver/downloads/list

    现在使用以下逻辑初始化驱动程序实例

    System.setProperty("webdriver.chrome.driver", "/Users/test/chromedriver");
    DesiredCapabilities dc=new DesiredCapabilities();
    dc.setBrowserName("chrome");
    dc.setPlatform(Platform.WINDOWS);
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc);
    driver.get(Constants.SERVER_URL_NAME);
    

相关问题