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!");
}
내 허브 구성 : 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
추가 검사시 드라이버 인스턴스를 잃어버린 것 같습니다. – user3329560