前提・実現したいこと
C#で特定の動作をするプログラムを作っています。
【流れ】
・特定文字を含むリンクを開く
・表示先ページの送信ボタン(Submit)をクリックする
※ページ内の特定文字を含む全てのリンクを上記を繰り返す
問題点
下記ソースの「IE3.Document.forms(0).Item("cmdSubmit").Click();」が動作せずにエラー処理になってしまいます。
考えられる原因等分かりましたら、ご教授お願い致します。
該当のソースコード
C#
1public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 } 7 8 private async void button1_Click(object sender, EventArgs e) 9 { 10 await Task.Run(() => 11 { 12 retry:; 13 var IE2 = new SHDocVw.InternetExplorer(); 14 var IE3 = new SHDocVw.InternetExplorer(); 15 try 16 { 17 IE.Visible = true; 18 object URL = "最初のページ"; 19 IE2.Navigate2(ref URL); 20 21 for (int t = 0; t < numericUpDown1.Value; t++) 22 { 23 24 IE2.Navigate2(IE2.Document.Url); 25 IE2.Wait(); 26 27 for (int i = 0; i < IE2.Document.Links.Length; i++) 28 { 29 if (IE2.Document.Links(i).Href.Contains("特定の文字")) 30 { 31 32 IE3.Visible = true; 33 object URL3 = IE2.Document.Links(i).Href; 34 IE3.Navigate2(ref URL3); 35 IE3.Wait(); 36 IE3.Navigate2(IE3.Document.Url); 37 IE3.Wait(); 38 IE3.Document.forms(0).Item("cmdSubmit").Click(); 39 IE3.Wait(); //一回目のここまでは上手く動作します。 40 } 41 } 42 } 43 System.Diagnostics.Process[] ps = 44System.Diagnostics.Process.GetProcessesByName("iexplore"); 45 46 foreach (System.Diagnostics.Process p in ps) 47 { 48 //プロセスを強制的に終了させる 49 p.Kill(); 50 } 51 } 52 catch 53 { 54 System.Threading.Thread.Sleep(5000); 55 System.Diagnostics.Process[] ps = 56 System.Diagnostics.Process.GetProcessesByName("iexplore"); 57 58 foreach (System.Diagnostics.Process p in ps) 59 { 60 //プロセスを強制的に終了させる 61 p.Kill(); 62 } 63 System.Threading.Thread.Sleep(5000); 64 goto retry; //retry先はtry/catchの上! 65 66 } 67 }); 68 } 69
環境
visual studio 2017
ここにより詳細な情報を記載してください。
どんなエラーが出ているのでしょうか?
あなたの回答
tips
プレビュー