답변

3

Windows는 하나의 IE 버전 만 설치할 수 있습니다. 여러 버전을 실행하기위한 해킹이 있지만 실제로는 WebDriver를 사용하지 못하게 할 것이라고 확신합니다 (잘못된 것으로 입증되기를 원하지만).

신발에서는 테스트하고 싶은 각 버전에 대해 Windows VM을 설정하고 RemoteWebDriver를 사용하여 대화하려고합니다.

+0

예 저는 IE 설치가 다른 여러 VM을 사용할 계획이었습니다. 프로그래밍 방식으로 RemoteWebDriver를 사용하여 다른 IE 버전을 어떻게 호출 할 수 있습니까? – sebarmeli

+0

코드에서 어떤 서버에 어떤 IE 버전이 있는지 알아야하고 올바른 URL로 RemoteWebDriver를 인스턴스화해야합니다. – jarib

+0

Modern.IE 웹 사이트에서는 다양한 버전의 IE가 설치된 VM 이미지를 다운로드 할 수 있습니다. https://www.modern.ie/en-us/virtualization-tools#downloads –

0

그러나 최신 IE는 "브라우저 모드"를 지원합니다. F12를 누르고 탐색 모드를 선택하기 만하면됩니다. AFAIK 꽤 잘 작동합니다 - 적어도 IE8과 IE7에 비해. 자바 스크립트로 액세스 할 수 있고 Selenium에서 자동으로 바뀌 었는지 궁금합니다.

+0

간단한 대답은 다음과 같습니다. 아니요, F12를 사용하여 시뮬레이션 할 수 없습니다 셀렌. "브라우저 모드"는 신뢰할 수 없습니다. http://stackoverflow.com/a/11418046/1080590 – Miro

10

예, 가능합니다. 내가 확장 메서드를 작성했습니다

this.SetCapability(CapabilityType.BrowserName, "internet explorer"); 
this.SetCapability(CapabilityType.Version, "8"); 
this.SetCapability(CapabilityType.Platform, "WINDOWS"); 

을 쉽게이 호출에 의해 모든 버전의 인스턴스를 만들 : 당신이 RemoteWebDriver를 사용하는 경우

DesiredCapabilities internetExplorer8 = 
          DesiredCapabilities.InternetExplorer().SetVersion("8"); 
IWebDriver webDriver = new RemoteWebDriver(seleniumHubUrl, internetExplorer8); 

이 정말 의미가 DesiredCapabilities 당신이 사용할 수있는 공공 방법을 여러 개의 노드로 구성된 Selenium2 Grid/Hub를 가지고 있습니다. 각각 다른 버전의 Internet Explorer를 가지고 있으며 각각은 허브에 연결된 노드입니다.

그리고 확장 :

public static class DesiredCapabilitiesExtension 
{ 
    public static DesiredCapabilities SetBrowserName(this DesiredCapabilities desiredCapabilities, string browserName) 
    { 
     // make sure the browser name is lowercase 
     desiredCapabilities.SetCapability(CapabilityType.BrowserName, browserName.ToLowerInvariant()); 
     return desiredCapabilities; 
    } 

    public static DesiredCapabilities SetVersion(this DesiredCapabilities desiredCapabilities, string version) 
    { 
     desiredCapabilities.SetCapability(CapabilityType.Version, version); 
     return desiredCapabilities; 
    } 

    public static DesiredCapabilities SetPlatform(this DesiredCapabilities desiredCapabilities, string platform) 
    { 
     // make sure the platform is case sensitive, uppercase to make it work 
     desiredCapabilities.SetCapability(CapabilityType.Platform, platform.ToUpperInvariant()); 
     return desiredCapabilities; 
    } 
} 
+1

이 작동하지 않는 것 같습니다. 버전 설정을 시도 할 때 그리드에서 IE 버전을 찾을 수 없습니다. 그것의 버전 번호와 함께 세션을 전달하지만 올바른 버전으로 브라우저를 찾을 수 없습니다 및 예외를 던져 이러한 기능을 가진 브라우저를 찾을 수 없습니다. –

1

가 서로 다른 버전의 인스턴스를, 당신은 필요한 버전 번호 capability.setVersion를 사용하여 버전을 설정할 수 있습니다.

-browser "browserName = 인터넷 익스플로러, MAXINSTANCES = 5, 플랫폼 = WINDOWS, 버전 = 8"

: 노드를 시작하는 동안 동시에, 당신은 명령 줄에서 다음 매개 변수를 추가해야 동일한 노드에서 여러 버전을 지원하려면 "-browser"를 여러 번 사용할 수 있습니다.

+0

노드 시작시 브라우저 플래그를 설정해야합니다. 그렇지 않으면 그리드가 원하는 버전을 찾지 못합니다. 감사! – Samuel