3

나는 FF 용 스크립트를 작성하고 있지만 다른 브라우저에서도 실행할 수있는 작은 작업이 필요했지만 IE 드라이버에 버튼 문제가있는 것 같습니까?셀레늄 webdriver IE 버튼 문제

오류가 발생하지 않지만 버튼을 클릭하지 않는 버튼에는 간단한 webelement.click()이 있습니다. FF로 그것의 벌금. 텍스트를 가져올 수 있으므로 값을 가져올 수 있습니다. 찾기 문이 올바르면 그냥 클릭하지 않을 것입니다.

생각이나 도움은 그냥

WebElement element; 
element = driver.findElement(By.id("pageheader_login")); 
element.click(); 

HTML을하고 큰

것 - 제어 내가 따르면 로그인

<div id="_ctl0_pageheader_navcontainer"> 
    <div id="phwelcome"> 

    <br class="clear" /> 
    </div> 
    <span id="navtext"> 

    <a id="_ctl0_pageheader_lnkRegister" class="logichref" 
     href="http://Register/1">Register Today</a> 
    <label id="_ctl0_pageheader_lblRegisterBar" class="barhide">| </label> 

    <a id="_ctl0_pageheader_customerconnection" class="logichref" 
     href="http://test.com" target="_blank">Help & Training</a> 
    <label class="bar">| </label> 
    <a class="logichref" href="http://test.aspx" 
     onmouseover="window.status='';return(true);" 
     onmouseout="window.status='';return(false);" 
     target="_blank">What's New</a> 
    <label class="bar">| </label> 
    <a id="_ctl0_pageheader_login" class="lbOn loginModal" 
     href="http://test/loginlightbox.aspx">Login</a> 
    </span> 
</div>  
+0

버튼이 포함 된 HTML을 게시 할 수 있습니까? –

+0

위의 게시물에 오크 포스트 – ducati1212

답변

5

같은 문제가있어 ImplicitlyWait을 추가하려고 내 IE 8. element.sendKeys ("\ n")를 사용하여 클릭을 수행 할 수있는 해결 방법을 찾았습니다. 기본적으로 버튼에 Enter 키를 누릅니다. 매우 깨끗하지는 않지만 버그가 수정 될 때까지 작동합니다!

+1

당신은 Selenium에서이 문제를 신고 했습니까? 나는 찾고 있지만 아무것도 찾을 수 없습니다 ... – Randy

+0

당신의 솔루션 소리 똑똑하지만 우리가 ipad 시뮬레이터를 사용하는 경우 동등한 무엇입니까? – Emna

0

로 지금 만 관심이 거기에 3 버튼이 있습니다 HTML의 경우 id_ctl0_pageheader_login입니다. 동적으로 생성 될 수 있으며 변경 될 수 있습니다.

당신이 부하 속도 함께 할 수있는 뭔가있을 By.linkText("Login") 또는 By.className("loginModal")

+0

내 코드에서 개인 정보를 제거하려고하는 문제를 혼란 스러울 수도 있습니다. .id = _ctl0_pageheader_login에 의해 버튼을 찾으려고하는데 변경되지 않은 코드는 FF로 잘 작동합니다. 나는 내 주변에서 볼 수있는 모든 다른 속성들에 의해서도 그것을 찾으려고 노력했지만, 다시 시도해 볼 수있어서 행복하다고 생각합니다. 호출도 실패하지 않으므로 .id가 변경되지 않고 내 catch 블록으로 던져집니다. 그것은 링크를 클릭하지 않고 오류없이 잘 실행됩니다. 그리고 위에서 말했듯이, gettext를하면 올바른 텍스트를 반환하므로 찾을 수 있습니다. – ducati1212

+0

게시 한 HTML에는 없지만 일부 JavaScript가 로그인 링크에 첨부되어있을 가능성이 있습니까? –

+0

로그인 버튼에 JavaScript가 없습니다. webdriver는 컨트롤이 있다고 생각하기 때문에 클릭 이벤트를 발생시키는 것으로 생각됩니다. 디버그 모드에서 click 이벤트를 단계별로 수행하고 그 작업을 확인하는 방법이 있습니다. – ducati1212

5

webelement에서 click 메소드를 사용할 수 없어서 WebDriver에서 거의 포기했습니다. 하지만 몇 가지 이유로 IE 확장을 125 %에서 100 %로 변경하고 클릭이 효과적이었습니다. 이것이 WebDriver의 알려진 버그인지 확신 할 수 없지만 솔루션을 찾을 때까지 거의 모두 함께 스크랩했습니다.

+0

같은 문제가있어서 @ Emmanuel의 솔루션을 사용하고있었습니다. 그러나 확대/축소 레벨을 100 % (광산이 90 %로 설정되었습니다!)로 설정하면 클릭이 아름답게 작동합니다! 감사! –

+0

나는이 문제에 하루 반을 보냈다. 당신의 대답을 찾은 후에 줌은 현재 105 %로 되돌아 갔고 완벽하게 작동하고있다. 고맙습니다. –

1

난 당신이 다음과 같이 매개 변수 org.openqa.selenium.Capabilities 사용) InternetExplorerDriver을 (인스턴스화 할 수 있습니다 생각이 당신을 도울 수

DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); 
    caps.setCapability("ignoreZoomSetting", true); 

    // Setting attribute nativeEvents to false enable click button in IE 
    caps.setCapability("nativeEvents",false); 
    WebDriver driver = new InternetExplorerDriver(caps); 

희망; 나는 WebDriver 테스트에서 어떤에서 HTML 페이지에 HREF = ""태그를 클릭 할 수 없습니다 IE 8과 같은 문제에 직면 한

4

제공하는 솔루션 shessuky이 나를 위해 일

; 즉

  • caps.setCapability ("ignoreZoomSetting", true)를 다음과 같이 BOTH ignoreZoomSetting 및 nativeEvents 기능을 설정하는 것입니다;
  • caps.setCapability ("nativeEvents", false);
0

당신이 터치 스크린 모니터 (예를 들어, 윈도우 8 터치 노트북)에 열려 브라우저 창 IE11에서 자동화 된 셀레늄 테스트를 실행하는 경우, 비 터치 스크린에 열려있는 브라우저 창 테스트를 실행 해보십시오 .
원래의 .click() 메소드는 모든 코드 대안없이 올바르게 작동해야합니다.

Selenium 2.0b3 IE WebDriver, Click not firing에 비슷한 StackOverflow 질문에 대한 내 전체 배경 대답 https://stackoverflow.com/a/31397650/115704을 참조하십시오.