2014-02-19 2 views
1

RC에서 Selenium Webdriver로 전환하면 Selenium Grid가 더 이상 작동하지 않습니다. 대부분의 테스트는 아직 RC에 있지만 한 번에 조금씩 Webdriver로 변환되므로 Selenium 인스턴스가 여전히 필요하다는 점에 유의하십시오. 병렬로 실행할 때 내 드라이버 및/또는 브라우저 (셀레늄) 인스턴스를 덮어 쓰는 것 같습니다. 여기 Webdriver로 변환 한 후 Selenium Grid에 문제가 발생했습니다.

테스트를위한 자바 코드 :

여기
public class SeleniumTestSupport 
{ 

    private static Properties singleSharedProperties; 
    private static Selenium webmailsingleSharedBrowser; 
    protected Selenium webmailbrowser; 
    protected WebDriver singleSharedDriver; 

    protected WebDriver driver; 
    protected Selenium browser;//was protected, now public 
    protected static String domain; 
    Integer flag = 0; 

    @BeforeSuite(alwaysRun = true) 
    public void startSeleniumClient() { 
    } 

    @BeforeTest(alwaysRun = true) 
    public void distributeTests(){ 
    } 

    @BeforeClass(alwaysRun = true) 
    public void initBrowser() { 
    } 

    @BeforeMethod(alwaysRun = true) 
    public void logIn() { 

     singleSharedProperties = new Properties(System.getProperties()); 
     try { 
      singleSharedProperties.load(getClass().getClassLoader().getResourceAsStream("selenium.properties")); 
      } catch (FileNotFoundException e) { 
      throw new RuntimeException(e); 
      } catch (IOException e) { 
      throw new RuntimeException(e); 
     } 

     String serverHost = singleSharedProperties.getProperty("selenium.serverHost", "localhost"); 
     String serverPortText = singleSharedProperties.getProperty("selenium.serverPort", "4444"); 
     int serverPort; 
     try { 
      serverPort = Integer.parseInt(serverPortText); 
      } catch (NumberFormatException e) { 
      throw new RuntimeException("Unable to parse selenium.serverPort '" + serverPortText + "'"); 
     } 
     String browserStartCommand = singleSharedProperties.getProperty("selenium.browserStartCommand"); 

     System.out.println("serverhost=" + serverHost); 
     System.out.println("serverport=" + serverPort); 
     System.out.println("browserStartCommand=" + browserStartCommand); 
     System.out.println("url=" + singleSharedProperties.getProperty("teamconnect.url")); 


     DesiredCapabilities capability = DesiredCapabilities.firefox(); 
     singleSharedDriver = new RemoteWebDriver(capability); 
     driver=singleSharedDriver; 
     browser = new WebDriverBackedSelenium(singleSharedDriver, singleSharedProperties.getProperty("teamconnect.url")); 


     String usernamePassword = singleSharedProperties.getProperty("teamconnect.user." + getUserGroup()); 
     String username = StringUtils.substringBefore(usernamePassword, "/"); 
     String password = StringUtils.substringAfter(usernamePassword, "/"); 



     driver.get(singleSharedProperties.getProperty("teamconnect.url")); 


     //This code is some setup for each Test, basically, logging into the application... 
     LoginPage loginPage = new LoginPage(browser); 
     loginPage.setUsername(username); 
     loginPage.setPassword(password); 
     loginPage.clickLogIn(); 
     //more code later, removed for brevity 


    } 

좀 더 정보입니다 : 여기

내 코드입니다

패키지 XXXXXXXXXXXXXX; import XXXXXXXXXXXXXX;

@Test (그룹 = { "관리자"}) 공용 클래스 EN1200_SR0050_DesignerRightsTest가 SeleniumTestSupport 연장 {

@Test 
public void testAllowAllAndDenyAllGroupDesignerRights2() { 

    GlobalNavigationPage globalNavigationPage = new GlobalNavigationPage(browser); 


    // Click Admin tab from global navigation bar. 
    globalNavigationPage.clickAdminTab(); 
여기

GlobalNavigationPage 자바 코드 :

패키지 XXXXXXXXXXXX;

import XXXXXXXXXXXXXX;

공용 클래스 GlobalNavigationPage은 내 생각 엔 당신이 테스트를 실행하는 방법에 대한 사용자 정의 구성을 가지고있다 EntityPage {

Reusable_Actions reusable_Actions = new Reusable_Actions(); 
Page page = new Page(browser); 

public GlobalNavigationPage(Selenium browser) { 
    super(browser); 
} 


public void clickAdminTab() { 

    long start = System.currentTimeMillis(); 

    while (System.currentTimeMillis() - start < WAIT_TIME_IN_SECONDS * 2000) { 

     // if element is present return 
     if (browser.isElementPresent(LNK_ADMIN)) { 
      return; 
     } 
     // wait for 1/10 of a second 
     try { 
      Thread.sleep(100); 
     } catch (InterruptedException e) { 
      throw new RuntimeException(e); 
     }} 

    driver.findElement(By.id(LNK_ADMIN)).click(); 
    browser.setTimeout(Integer.toString(WAIT_TIME_IN_SECONDS * 2000)); 
    browser.waitForPageToLoad(Integer.toString(WAIT_TIME_IN_SECONDS * 2000)); 
    assertTextNotPresent("System Error Has Occured!"); 
} 

답변

1

확장합니다.

허브 구성 가능성이 가장 높은 상태 :

만 RC 테스트를 실행합니다.

WebDriver 테스트를 실행하려면 사용할 WebDriver 브라우저의 양을 지정해야합니다.

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

당신은 우리가 셀레늄에 대한 2 개 테스트를 RC 테스트를위한 "Selenium""WebDriver"을 지정할 수 있습니다 볼 수 있습니다.

+0

내 허브 구성 : java -jar selenium-server-standalone-2.39.0.jar -role hub 내 노드 구성 : java -jar selenium-server-standalone-2.39.0.jar -role node -hub http : /10.50.5.86 : 4444/grid/register-browser "browserName = firefox, maxInstances = 1"-maxSession = 1 이러한 파일을 배치 파일로 실행합니다. – user3329560

+0

추가 검사시 드라이버 인스턴스를 잃어버린 것 같습니다. – user3329560

관련 문제