2017-03-22 13 views
0

ここにシナリオがあります:recaptchaに戻る

私はCefSharpブラウザ経由でページを読み込んでいます。ユーザーがWebページではなくフォーム上の特定のボタンをクリックすると、ページは再キャプチャに注目する必要があります。

私はCaptchaにタブするためにSendKeysを使用しようとしましたが、一度押すとタブを押すのではなく、複数回登録されたように見えて、キャプチャの右下にある 'Terms'チェックボックス。

また、chromeBrowser.ExecuteScriptAsync()メソッドを使用して、ページ上でjavascriptを実行しようとしました。私は正常にテキストボックスに焦点を当て、それらのテキストボックスからkeypressイベントを実行することもできますが、前のテキストボックスでtab keypressイベントを実行すると、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を試して、フォーカスをそれに設定しました。キャプチャに焦点を合わせるものはありません。

私はアイデアがありません。どんな助けもありがとう。

答えて

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