2013-08-02 5 views
3

검도 그리드를 사용하는 응용 프로그램에 대한 UI 테스트를 작성하려고합니다. 브라우저를 구동하기 위해 셀레늄을 사용하고 있는데 그리드에서 행을 선택하는 데 문제가 있습니다. 단순히)합니다 (webElement을 .click 전화를 기대했다검도 UI 그리드 선택 셀레늄 웹 드라이버를 통해

IWebElement matterToSelect = MatterToSelectGrid.FindElement(By.XPath("//td[text()='" + matterId + "']/ancestor::tr")); 

하지만, 작동하지 않았다 :

I는 다음과 같이 올바른 행을 선택 할 수 있었다. 그래서 나는 행동을 시도했습니다 :

new Actions(Driver).MoveToElement(matterToSelect).Click().Build().Perform(); 

도 기쁨. js로 무엇을 선택해야할까요? :

아직 아무 것도 아니고, 더 직접적인 선택만으로도 효과가 있는지 어떻게 알 수 있습니까?

js.ExecuteScript("return $(\"#sourceGrid > table:nth-child(1) > tbody:nth-child(3) > tr:nth-child(1) > td:nth-child(1)\").click();"); 

grrrr 아직 운이 없습니다. 그래서 내 생각에는 아마도 검도 그리드에 select() 메소드를 사용할 수 있을까요? 글쎄요, 그렇습니다. 그러나 제가 읽은 글에서 그리드를 다시 바인딩해야합니까? 내가 찾을 수있는 모든 exaples은 다음과 같이 보일 :

$("#sourceGrid").data("kendoGrid").select() 

하지만 난 내 테스트에서 그리드를 다시 결합하지 않기 때문에이 시도하지 않았습니다. 또한 모든 격자는 HTML 도우미 메서드를 사용하여 설정되고 .dataSource 메서드를 사용하여 작업 메서드에 바인딩되므로 data()에 무엇이 있어야하는지 잘 모르겠습니다. 누구든지 더 좋은 제안을 받았습니까?

답변

4

좋아,이 같은 결국 해냈어 :

IJavaScriptExecutor js = Driver as IJavaScriptExecutor; 
      js.ExecuteScript(String.Format("return $('td:contains(\"{0}\")').parent().addClass('k-state-selected');", matterId)); 
0

내가 XPath에의 팬이 아니다, 오해하지 마세요하지만 내가 첫 번째 행을 선택하는 것으로 가장 쉬운 방법입니다 검도 그리드. 나는 그리드에 'ticketGrid'의 ID를 줬다. 그런 다음 Chrome Dev 도구를 사용하여 첫 번째 행을 검사했습니다. 그런 다음 마우스 오른쪽 버튼을 클릭하고 '복사 XPath를'을 선택하고 내가 가지고 있습니다이 :

나는 다음과 같은 한 내 specFlow 테스트에서 다음
//*[@id='ticketGrid']/table/tbody/tr[1] 

:

var wait = new WebDriverWait(WebDriver, timeout: TimeSpan.FromSeconds(5)); 
var firstRow = wait.Until(w => w.FindElement(By.XPath(@"//*@id='ticketGrid']/table/tbody/tr[1]"))); 
firstRow.Click(); 

희망이

을하는 데 도움이