c#
  • firefox
  • selenium
  • webdriver
  • 2012-07-10 10 views 0 likes 
    0

    id = "0"인 div 태그를 클릭하려고합니다. 이 ID를 찾을 수는 있지만 클릭 할 수 없습니다. 다른 아이디를 클릭하면됩니다. 이 파이어 폭스 12에서 작업하지만 난 ((C#값이 0 인 요소를 클릭 할 수 없습니다.

    driver.FindElement와 By.XPath을 Selenium2을 사용하고 13 에 실패했다 "// 사업부의 [에 @ 클래스 = 'MenuItem의'와 @ 아이디 = '0']")).딸깍 하는 소리();

    <div style="position: absolute; top: 72px; left: 9px; " id="file" class="Menu"> 
    <div class="MenuItem" id="0">&nbsp;<img src="images/UI/Icons/folder.png">Folder</div> 
    <div class="MenuItem" id="1">&nbsp;<img valign="middle"  src="images/UI/Icons/tree/folderBlogClosed.png">Blog</div> 
    <div class="MenuItem" id="2">&nbsp;<img valign="middle" src="images/UI/Icons/folderBoard.png">Discussion Board</div> 
    </div> 
    
    +0

    이러한 ID가있는 이유를 알고 있습니까? 귀하의 페이지가 자동화 된 UI 테스트를 위해 준비가되어 있지 않은 것으로 보입니다. 이 신분증이 좀 더 합리적이고 신뢰할만한 것으로 바뀌기를 바랍니다. 또한 다른 드라이버와 함께 사용해 보셨습니까? FF 드라이버와 관련된 문제인지 확인하기 만하면됩니다. – Arran

    +0

    그 요소를 클릭 할 수 없다고 할 때? 예외 나 오류가 있습니까? 있다면, stacktrace 예외를 게시 할 수 있습니까? –

    +0

    총 4 개의 메뉴가 있습니다. 첫 번째 메뉴에서 첫 번째 항목을 클릭하려고하지만 두 번째 메뉴에서 첫 번째 항목을 클릭합니다. 나는이 행동에 놀랐다. id 값을 다른 값으로 변경하려고 시도했지만 id = "file"(새 메뉴) 인 div 태그에서 첫 번째 자식 요소를 클릭 해 보았습니다 두 경우 모두 두 번째 메뉴의 첫 번째 항목을 클릭합니다. – RashmiPires

    답변

    0

    ID로 선택하는 것 외에 XPath를 사용하는 이유가 있습니까?

    driver.FindElement(By.Id("0")); 
    

    HTML ID는 페이지에서 고유해야합니다.

    +0

    심지어 시도해 보았습니다. ID로 선택하지만 작동하지 않습니다. – RashmiPires

    +0

    * 모든 * FindElement 쿼리 (모든 요소)가 작동합니까? 그것은 webdriver + FF13 호환성 문제 일 수 있습니다. 셀레늄 (또는 C#)을 더 이상 정기적으로 사용하지 않기 때문에 직접 테스트 할 수 없습니다. –

    1

    숫자로 시작하는 ID 속성을 갖는 요소는 invalid HTML입니다. 대부분의 브라우저가이를 잘 렌더링하지만, Selenium WebDriver처럼 JavaScript를 사용하여 ID로 요소를 찾으려는 시도는 실패 할 가능성이 큽니다.

    +0

    @ JimEvans- WebDriver가 요소를 찾기 위해 javascript를 사용하고 있습니까? 내 생각에 Selenium 1에서이 작업을 수행했으며 webdriver는 브라우저에서 기본 지원을 사용합니다. – vidit

    +0

    저는 정말 확신합니다. 드라이버는 findElement Automation Atom을 사용하여 CSS 선택자와 XPath를 제외한 모든 위치 유형의 요소를 찾고, 둘 다 JavaScript를 사용합니다. – JimEvans

    +0

    @ JimEvans- XPath 로케이터의 경우 webdriver는 브라우저에서 기본 지원을 사용합니다. – vidit

    0

    이 문제는 마우스 동작 을 사용하여 해결되었습니다. 귀하의 의견을 모두 주셔서 감사합니다.

    Actions builder = new Actions(driver); 
         IWebElement tagElement = driver.FindElement(By.XPath("//div[@id='0' and @class='MenuItem']")); 
         //mouse hover on first item 
         builder.MoveToElement(tagElement).Perform(); 
         //click on first item 
         driver.FindElement(By.XPath("//div[@id='0' and @class='MenuItem']")).Click(); 
    
    관련 문제