2013-02-21 16 views
0

C# 및 Selenium을 사용하여 자동화 된 스크립트를 작성합니다. 여기서는 다른 것들 중에서 droplist (.csv 파일에 지정된 값)에서 특정 값을 선택하려고합니다. 나는 오류를 얻는다. 클릭 원자 실행 중 오류가 발생했습니다.

는 " 오류가 클릭 원자를 실행 발생 (경고 : 서버는 스택 트레이스 정보를 제공하지 않았다)"

내가 클릭 원자이 무엇인지 모른다, 그것을 해결하는 방법을 훨씬 덜 ... 어떤 도움이 크게 감사드립니다!

이 사전

에서

감사는 droplist 코드입니다 : //...and이 나의 선택 - 방법

private void selectValueFromAdultDropList(IWebElement dropListObjects, string adults) 
{ 

    SelectElement manipulateDroplistObject = new SelectElement(dropListObjects); 
    manipulateDroplistObject.SelectByValue(adults); 
    String selection = manipulateDroplistObject.SelectedOption.Text; 

    int numberOfElements = manipulateDroplistObject.Options.Count; 
    writeToLog("Number of elements in Adult Droplist: " + numberOfElements, this.GetType().Name); 
    writeToLog("Selection from adult droplist: " + selection, this.GetType().Name); 
} 
+0

전체 스택 추적은 무엇입니까? 오류가 발생한 줄은 무엇입니까? 어떤 브라우저? 해당 브라우저의 버전은 무엇입니까? Selenium의 어떤 버전입니까? – Arran

+0

스택 추적 없음 (그러므로 경고 ...;)); 오류가 줄에 발생합니다. SelectElement manipulateDroplistObject = new SelectElement (dropListObjects); 선택 방법에서; 브라우저는 IE9 v9.0.8112.16421입니다. Selenium 서버 버전 2.25.0; 같은 droplist에서 객체를 선택하는 방법은 90 %의 시간 동안 잘 동작합니다. :) – dedmau5

+0

셀레늄 v2.30으로 업데이트하는 것이 좋습니다. v2.25는 상당히 오래된 버전입니다. – Arran

답변

1

입니다

public bool isellHOSelectAdultsDroplist(string adults) 
{ 
    writeToLog(String.Format("Selecting adults from drop list"), this.GetType().Name); 
    String xpathString = HO_ADULT_SELECTION; 

    if(GpoExplicitWaitXpathElement(xpathString, 3, 5)) 
    { 
     IWebElement dropListObjects = webDriver.FindElement(By.XPath(xpathString)); 
     writeToLog(String.Format("DEBUG: Trying to click on appropriate number of adults..."), this.GetType().Name); 
     selectValueFromAdultDropList(dropListObjects, adults); 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

난을 답변 해 드리겠습니다 귀하가 물어 본 특정 질문 인 '클릭 수'란 무엇입니까? IE 드라이버에는 꽤 많은 기능이 있습니다.이 기능의 구현은 세 가지 요소로 이루어져 있습니다.

첫 번째는 IE의 COM 인터페이스입니다. 이것들은 10 년 이상 IE의 여러 부분을 자동화하는 데 사용 되어온 객체와 메소드입니다.

두 번째 기술은 "원시 이벤트"입니다. 즉, 키 누름 및 마우스 클릭과 같은 사용자 상호 작용을 수행하기 위해 OS 레벨 메커니즘을 사용합니다. Windows에서는 Windows SendMessage API를 사용한다는 의미입니다. 거의 언제든지 키보드 나 마우스를 IE 드라이버와 함께 사용하면 기본적으로 네이티브 이벤트를 사용하고 있습니다.

마지막으로 IE 드라이버 기능의 상당 부분은 모든 브라우저에서 공유하는 JavaScript 기능을 사용하여 구현됩니다. 이러한 기능을 "automation atoms"이라고합니다.

네이티브 이벤트를 마우스 조작에 사용하는 경우의 예외 중 하나는 <select> 요소에서 <option> 요소를 선택하는 것입니다. IE는 <option> 요소에 검색 가능한 크기를 제공하지 않으므로 IE 드라이버는 JavaScript를 통해 클릭 동작을 시뮬레이션해야합니다. 즉, 클릭 동작에 자동화 원자을 사용하는 것을 의미합니다. 귀하의 경우에는 "클릭 원자를 실행하지 못했습니다."라고 충실하게보고 된 JavaScript를 실행해야합니다. 문제를 재현 할 샘플 HTML 페이지를 포함하여 세부 정보가 없으면 문제의 근본 원인을 진단하는 것이 매우 어려울 것입니다.

이 시점에서 최신 IE 드라이버로 업데이트하라는 메시지가 표시됩니다. 이 영역의 코드 중 일부는 정밀 검사를 거쳤으며 가장 최근의 드라이버를 사용하여 오류 케이스에서 더 정확한 오류를 추출 할 수 있어야합니다.

+0

고맙습니다! 테스트 및 개발 자동화 사이트에서 새로 생겼습니다. 이렇게 정보를 환영합니다! :) – dedmau5

관련 문제