この質問は過去に尋ねられた可能性がありますが、検索しましたが、まだ解決策が見つかりません。
今まで見つけたすべてのオプションを試しましたが、すべて無駄でした。SendKeys は、ファイル入力ボックスにアップロードするファイル パスを入力しないため、機能しません。使用可能な値属性がないため、ファイル入力ボックスの「SetAttribute」値を設定できません:
それで全部です。
element.focus() を使用すると、「アップロードするファイルを選択」ダイアログがポップアップ表示され、プログラムで入力してファイル入力ボックスで開く方法がわかりません。
ユーザーがアプリケーションと対話する必要がないように、自動化して完了させたい。アプリケーションは、指定されたファイル パスからハードディスクからファイルを選択し、フォームの他のフィールドに入力してからアップロードを開始します。すべて Windows フォーム アプリケーションの Web ブラウザー コントロールを使用します。
解決策が見つかりません!
誰でも助けてもらえますか?(これはstackoverflowに関する私の最初の質問です。したがって、何か間違ったことをしている場合は、ガイドしてください。つまり、そのような質問を投稿することは許可されていません!)
コードは次のとおりです。
HtmlElementCollection heCollection = doc.GetElementsByTagName("input");
foreach (HtmlElement heSpan in heCollection)
{
string strType = heSpan.GetAttribute("type");
string strName = heSpan.GetAttribute("name");
if (strType.Equals("file") && strName.Equals("file"))
{
heSpan.Focus();
//heSpan.SetAttribute("value", "test.jpg");
SendKeys.Send("C:\\1.txt");
//heSpan.InnerText = "c:\\1.txt";
}
//Title for the attachment
if (strName.Equals("field_title"))
{
heSpan.InnerText = "1.txt";
}
}
このコードが実行されると、細かい入力ボックスでカーソルが点滅し始めますが (heSpan.focus() を設定したため)、ファイル パスはファイル入力ボックスに表示されません。heSpan.InvokeMember("click"); を実装すると、アップロードするファイルの選択ダイアログ/ポップアップウィンドウが開き、そのポップアップを動的に入力してファイルパスをファイル入力ボックスに挿入する方法がわからないため、行き詰まります。