programing tip

Java와 함께 Selenium2 (Webdriver)를 사용하여 IE 브라우저를 시작할 수 없음

itbloger 2021. 1. 5. 07:48
반응형

Java와 함께 Selenium2 (Webdriver)를 사용하여 IE 브라우저를 시작할 수 없음


Java로 작성된 셀레늄 자동화 테스트를 실행하기 위해 IE 브라우저를 시작할 수 없습니다. Windows 7 및 IE 9를 사용하고 있습니다. 다음은 내 코드입니다.

첨부 파일을 찾으십시오.여기에 이미지 설명 입력

public class GoogleNews {
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();
    ArrayList al = new ArrayList();
    @Before
    public void setUp() throws Exception {
        //driver = new FirefoxDriver();
        driver =new InternetExplorerDriver();
        baseUrl = "https://news.google.co.in/";

    }

    @Test
    public void testApple() throws Exception {
        driver.get(baseUrl);
    }
}

모든 영역에서 동일한 보안 수준을 설정해야합니다. 이를 위해 아래 단계를 따르십시오.

  1. IE 열기
  2. 도구-> 인터넷 옵션-> 보안으로 이동하십시오.
  3. 모든 영역 (인터넷, 로컬 인트라넷, 신뢰할 수있는 사이트, 제한된 사이트)을 동일한 보호 모드로 설정합니다. 활성화 또는 비활성화는 중요하지 않습니다.

마지막으로 오른쪽 상단 모서리에있는 기어를 마우스 오른쪽 버튼으로 클릭하고 상태 표시 줄을 활성화하여 확대 / 축소 수준을 100 %로 설정합니다. 이제 기본 확대 / 축소 수준이 오른쪽 하단에 표시됩니다.


스택 추적에 따르면 IE의 모든 영역에 대해 보호 모드 설정을 동일하게 설정해야합니다. 여기에서 이유를 읽으십시오 : http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html

동일한 링크에서 빠른 방법 : "IE의 도구 메뉴 (또는 이후 버전의 도구 모음에있는 톱니 바퀴 아이콘)에서"인터넷 옵션 "을 선택합니다. 보안 탭으로 이동합니다. 대화 상자 하단에서 각 영역에 "보호 모드 사용"확인란이 표시되어야합니다. 확인란의 값을 각 영역에 대해 선택하거나 선택하지 않은 동일한 값으로 설정합니다.


다음 WebDriver Java 코드 스 니펫은 IE를 실행하는 데 작동합니다. 이 코드는 IE 브라우저의 모든 영역에 대한 보호 모드 설정 설정을 무시합니다.

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
File file = new File("D:\\Ripon Al Wasim\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.google.com/");

IEDriverServer를 다운로드하고 원하는 위치에 압축을 푼 다음 절대 경로를 설정합니다 (위 예에서는 "D : \ Ripon Al Wasim \ IEDriverServer.exe").


  1. 로 이동하십시오 IE->Tools->Internet Options.
  2. 보안 탭으로 이동합니다.
  3. 모두 (인터넷, 로컬 인트라넷, 신뢰할 수있는 사이트 및 제한된 사이트)에 대해 보호 모드를 활성화 / 비활성화합니다.

이 문제를 해결하려면 다음 두 가지를 수행해야합니다.

  1. 드라이버가 생성 한 Internet Explorer 인스턴스에 대한 연결을 유지할 수 있도록 대상 컴퓨터에 레지스트리 항목을 설정해야합니다.

  2. 해당 컴퓨터 (자동화를 실행하려는 위치)에서 Internet Explorer 브라우저의 몇 가지 설정을 변경합니다.

1 . 레지스트리 키 / 항목 설정 :

  • 레지스트리 키 또는 항목을 설정하려면 "레지스트리 편집기"를 열어야합니다.

  • "레지스트리 편집기"를 열려면 windows 버튼 키 + r 알파벳 키를 눌러 "Run Window"를 연 다음 "regedit"를 입력하고 Enter를 누르십시오.

  • 또는 Windows 버튼 키를 누르고 시작 메뉴에서 "regedit"를 입력하고 Enter를 누르십시오. 이제 OS 유형에 따라 32/64 비트가 해당 단계를 따릅니다.

Windows 32 비트 : "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl"위치로 이동하여 "FEATURE_BFCACHE"키를 확인합니다.

Windows 64 비트 : HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl 위치로 이동하여 "FEATURE_BFCACHE"키를 확인합니다. 주의하시기 바랍니다 FEATURE_BFCACHE의 하위 키 또는 존재하지 않을 수 있으며, 생성되어야 가없는 경우.

중요 : 이 키 안에 값이 0 인 iexplore.exe라는 DWORD 값을 만듭니다.

레지스트리 설정

2. Internet Explorer 브라우저 설정 변경 :

  • 설정 버튼을 클릭하고 "인터넷 옵션"을 선택 합니다.

  • "인터넷 옵션"창에서 "보안" 탭으로 이동합니다.

  • 이제 "인터넷" 옵션을 선택하고 "보호 모드 사용"확인란을 선택 취소하고 "보안 수준"을 낮음으로 변경합니다.

  • 이제 "로컬 인트라넷" 옵션을 선택하고 "보안 수준"을 낮음으로 변경합니다.

  • 이제 "신뢰할 수있는 사이트" 옵션을 선택하고 "보안 수준"을 낮음으로 변경합니다.

인터넷 옵션

  • 이제 "적용" 버튼을 클릭하면 경고 팝업이 나타날 수 있습니다. 경고를 위해 "확인"버튼을 클릭 한 다음 인터넷 옵션 창에서 "확인"버튼을 클릭합니다.

설정 저장

  • 이 후 브라우저를 다시 시작하십시오.

IEDriverServer.exe에 절대 경로를 사용하는 것보다 프로젝트에 따라 상대 경로를 사용하는 것이 좋습니다.

        DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
        capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
        File fil = new File("iDrivers\\IEDriverServer.exe");
        System.setProperty("webdriver.ie.driver", fil.getAbsolutePath());
        WebDriver driver = new InternetExplorerDriver(capabilities);        
        driver.get("https://www.irctc.co.in");          

NighwatchJS의 경우 :

"ie" : {
  "desiredCapabilities": {
    "browserName": "internet explorer",
    "javascriptEnabled": true,
    "acceptSslCerts": true,
    "allowBlockedContent": true,
    "ignoreProtectedModeSettings": true
  }
},

Wanted to share the actual code as few might still be confused about how to implement it.This is for C# NUNIT implementation. You need to do this because your company might not allow you to change the default security settings for obvious reasons. Good luck!

InternetExplorerOptions options = new InternetExplorerOptions();
            options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
            options.IgnoreZoomLevel = true;
            driver = new
                InternetExplorerDriver("C:\\Users\\stdd\\Desktop\\SLL\\SLLAutomation" +
                "\\Clysis\\STGSearch\\STGClaSearch\\Driver\\", options);
            driver.Manage().Window.Maximize();

Before you start with Internet Explorer and Selenium Webdriver Consider these two important rules.

  • The zoom level :Should be set to default (100%) and
  • The security zone settings : Should be same for all. The security settings should be set according to your organisation permissions.

How to set this?

  • Simply go to Internet explorer, do both the stuffs manually. Thats it. No secret.
  • Do it through your code.

Method 1:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

    capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);

    System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");

    WebDriver driver= new InternetExplorerDriver(capabilities);


    driver.get(baseURl);

    //Identify your elements and go ahead testing...

이것은 분명히 오류를 표시하지 않으며 브라우저가 열리고 URL로 이동합니다.

그러나 이것은 어떤 요소도 식별하지 않으므로 진행할 수 없습니다.

왜? 우리는 간단하게 오류를 억제하고 IE에 해당 URL을 열고 가져 오도록 요청했기 때문입니다. 그러나 Selenium은 브라우저 확대 / 축소가 100 % 인 경우에만 요소를 식별합니다. 기본. 따라서 최종 코드는

방법 2 강력하고 완전한 증명 방법 :

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

    capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);

    System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");

    WebDriver driver= new InternetExplorerDriver(capabilities);


    driver.get(baseURl);

    driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0"));

    //Identify your elements and go ahead testing...

도움이 되었기를 바랍니다. 추가 정보가 필요한 경우 알려주십시오.

참조 URL : https://stackoverflow.com/questions/14952348/not-able-to-launch-ie-browser-using-selenium2-webdriver-with-java

반응형