2017-02-03 2 views
0

두 개의 드롭 다운에서 항목을 선택하고 버튼을 클릭하는 Selenium으로 테스트를 작성하려고합니다. 내가 겪고있는 문제는 첫 번째 드롭 다운에서 선택한 항목에 따라 두 번째 드롭 다운이 anglejs 호출로 채워진다는 것입니다. 어떤 이유로 인해 각도 호출이 실행되지 않고 두 번째 목록에 절대 채워지지 않으며 오류가 발생합니다. 왜 값이 변경 될 때 angularjs 호출이 실행되지 않습니까? 드롭 다운의드롭 다운에서 항목을 선택해도 Selenium을 사용하여 angularjs 함수가 실행되지 않습니다

샘플 :

<select id="itemList" style="width:495px;" onchange="angular.element($(this)).scope().itemChanged(this);"> 
    <option value="item1">Item 1</option> 
    <option value="item2">Item 2</option> 
    <option value="item3">Item 3</option> 
</select> 

셀레늄 코드 :

SelectElement item = new SelectElement(driver.FindElement(By.Id("itemList"))); 
item.SelectByText("Item 2"); 

제대로 첫 번째 드롭 다운 메뉴에서 항목을 선택합니다, 그러나 어떤 이유로 각 호출이 두 번째를 채울 실행되지 않습니다 쓰러지 다; 전화를 어떻게 할 수 있습니까?

답변

0

첫 번째 드롭 다운이 채워진 후 각도 함수를 호출 한 onchange() 이벤트를 수동으로 트리거하여이 문제를 해결할 수있었습니다.

IJavaScriptExecutor jse = (IJavaScriptExecutor)driver; 
jse.ExecuteScript("$(arguments[0]).change();", driver.FindElement(By.Id("itemList"))); 
0

셀레늄이 트리거되지 않으면 (클릭, 선택 등) 강제로 트리거를 실행할 수 없습니다. 당신은 어떤 자바 스크립트를 사용하여 그것을 강제 수 있습니다. 그러나 select 대신 click()으로 시도하는 것이 좋습니다.

+0

또한 모든 옵션을 가져 와서 올바른 'option.Click();'을 클릭했지만 결과가 동일 해 보입니다. 선택된 값이 정확한데 그 함수는 실행되지 않습니다. – Justin

관련 문제