2013-01-24 3 views
0
import java.util.regex.Pattern; 
import java.util.concurrent.TimeUnit; 
import org.junit.*; 
import static org.junit.Assert.*; 
import static org.hamcrest.CoreMatchers.*; 
import org.openqa.selenium.*; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 
import org.openqa.selenium.support.ui.Select; 

public class Test1 { 
    private WebDriver driver; 
    private String baseUrl; 
    private boolean acceptNextAlert = true; 
    private StringBuffer verificationErrors = new StringBuffer(); 

    @Before 
    public void setUp() throws Exception { 
    System.setProperty("webdriver.ie.driver", "D:/Development/ProgrammingSoftware/Testing/IEDriverServer.exe"); 

    WebDriver driver = new InternetExplorerDriver(); 
    baseUrl = "http://seleniumhq.org/"; 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    } 

    @Test 
    public void test1() throws Exception { 
    driver.get(baseUrl + "/download/"); 
    driver.findElement(By.linkText("Latest Releases")).click(); 
    driver.findElement(By.linkText("All variants of the Selenium Server: stand-alone, jar with dependencies and sources.")).click(); 
    } 

    @After 
    public void tearDown() throws Exception { 
    driver.quit(); 
    String verificationErrorString = verificationErrors.toString(); 
    if (!"".equals(verificationErrorString)) { 
     fail(verificationErrorString); 
    } 
    } 

    private boolean isElementPresent(By by) { 
    try { 
     driver.findElement(by); 
     return true; 
    } catch (NoSuchElementException e) { 
     return false; 
    } 
    } 

    private String closeAlertAndGetItsText() { 
    try { 
     Alert alert = driver.switchTo().alert(); 
     if (acceptNextAlert) { 
     alert.accept(); 
     } else { 
     alert.dismiss(); 
     } 
     return alert.getText(); 
    } finally { 
     acceptNextAlert = true; 
    } 
    } 
} 

동일한 세션에서 IE를 사용하고 싶습니다. 그러나이 코드는 항상 IE의 새 인스턴스를 엽니 다. 나는 어떻게이 일을 얻는가?Selenium을 동일한 브라우저 세션에서 사용하십시오.

+0

무엇을 의미합니까? IEDriver를 기존 세션에 연결 하시겠습니까? 전체 테스트 세트에 대해 하나의 IEDriver를 원하십니까? 몇 개의 시험 * 수업 *을 가지고 있습니까? – Arran

+0

나는 Junit에 익숙하지 않지만 위의 코드가 NPE를 던지지 않을까? 이전의 메서드에서 Webdriver를 다시 선언하고 클래스의 private var 인 인스턴스를 실제로 인스턴스화하지 않았기 때문에. –

답변

2

기존 세션에 드라이버를 부착 할 수 없다고 생각합니다.

테스트 메서드 실행을 완료하고 다른 클래스 나 패키지에있는 다른 테스트 메서드를 실행하려면 현재 드라이버를 전달하여 메서드를 호출하여 현재 인스턴스를 사용할 수 있도록합니다. 저기있는 운전사.

관련 문제