2017-03-22 6 views
0

다음은 시나리오입니다.재구성을위한 탭

CefSharp 브라우저를 통해 페이지를로드하고 있습니다. 사용자가 특정 단추 (웹 페이지가 아닌 양식에서)를 클릭하면 페이지가 재구성에 집중해야합니다.

나는 captcha로 탭하기 위해 SendKeys를 사용하려고 시도했지만 한 번 누르면 탭이 여러 번 등록되고 대신 captcha의 오른쪽 하단에있는 'Terms'링크에 초점을 맞춘다. 확인란.

또한 chromeBrowser.ExecuteScriptAsync() 메소드를 사용하여 페이지에서 javascript를 실행 해 보았습니다. 성공적으로 텍스트 상자에 집중할 수 있으며 해당 텍스트 상자에서 키 누르기 이벤트를 실행할 수도 있지만 이전 텍스트 상자에서 탭 키 누르기 이벤트를 실행하면 recaptcha는 여전히 강조 표시되지 않습니다.

chromeBrowser.Focus(); 
chromeBrowser.ExecuteScriptAsync("document.getElementsByClassName('txtBox')[0].Focus();" + 
"document.getElementsByClassName('txtBox')[0].value = 'test string';") 
SendKeys.Send("{TAB}"); 
SendKeys.Send("{ENTER}"); 

나는 또한 탭 참으로 내가 페이지 검사에 recapctha에 보여줍니다 모든 클래스 명 getElementsByClassName을 시도했습니다

chromeBrowser.Focus(); 
chromeBrowser.ExecuteScriptAsync("document.getElementsByClassName('txtBox')[0].addEventListener('keypress', function(){" + 
"alert('something was pressed!');});" + 
"document.getElementsByClassName('txtBox')[0].focus();" + 
"document.getElementsByClassName('txtBox')[0].value = 'test value';" + 
"var e = document.createEvent('KeyboardEvent');" + 
"e.initKeyboardEvent('keypress', true, true, document.defaultView, 9, 0, '', false, '');" + 
"document.getElementsByClassName('txtBox')[0].dispatchEvent(e);"); 

'을 누르면'되고 있음을 확인하는 이벤트 리스너를 추가 한 그런 다음에 포커스를 설정하십시오. 나는 recaptcha iFrame의 ID에 getElementById를 시도하고 그것에 포커스를 설정했습니다. captcha에 초점을 맞춘 것은 없습니다.

나는 생각이 없습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

나는 SendKeys와 javascript를 완전히 피해야하는 해결책을 발견했다. CefSharp 브라우저에는 키 누름과 마우스 클릭을 시뮬레이션 할 수있는 기능이 있습니다. 나는 captcha 앞에 있던 텍스트 박스를 선택한 다음 탭으로 탭핑했다.

chromeBrowser.Focus(); 
chromeBrowser.ExecuteScriptAsync("document.getElementsByClassName('txtBox')[0].focus();"); 

CefSharp.KeyEvent keyEvent = new CefSharp.KeyEvent(); 
keyEvent.WindowsKeyCode = (int)Keys.Tab; 
chromeBrowser.GetBrowser().GetHost().SendKeyEvent(keyEvent); 
+1

'WinForms' * 및 *'WPF'에 해당합니까? 명확히하기 위해 질문에 태그를 추가 할 가치가 있습니다. :-) – TEK

+0

WinForms이 경우 – TheEvilMetal