public override void Run(bool runChildren) { Data data = null; IRawler current = this.Parent; while (current != null) { if (current is Data) { data = current as Data; break; } current = current.Parent; } if (data != null) { if (data.GetCurrentDataNull()) { if (ignoreDataNull == false) { ReportManage.ErrReport(this, "RowがNullです。Writeが動作していないようです。"); var list = this.GetAncestorRawler().Where(n => n is Page); if (DoPageReLoad) { if (list.Count() > 0) { var p = list.First() as Page; pageCount++; if (PageReLoadCount < pageCount) { ReportManage.Report(this, "再読み込み待機中。"); var t = Task.Delay(1000 * pageCount * pageCount); t.Wait(); p.Run(); } else { ReportManage.ErrReport(this, "書き込み先のData クラスが見つかりませんでした。"); } } } } } else { pageCount = 0; data.NextDataRow(); ReportManage.Report(this, "NextDataRow"); } } else { ReportManage.ErrReport(this, "書き込み先のData クラスが見つかりませんでした。"); } this.RunChildren(runChildren); }
/// <summary> /// 実行 /// </summary> /// <param name="runChildren"></param> public override void Run(bool runChildren) { bool flag = false; if (loginErrMessages.Count > 0) { foreach (var item in loginErrMessages) { if (this.text.Contains(item)) { flag = true; } } } else { flag = true; } if (flag) { LoginClient loginClient = null; IRawler current = this.Parent; while (current != null) { if (current is LoginClient) { loginClient = current as LoginClient; break; } current = current.Parent; } if (loginClient != null) { // breakFlag = true; loginClient.ReLogin(); var list = this.GetAncestorRawler().Where(n => n is Page); if (list.Count() > 0) { var p = list.First() as Page; p.GetCurrentPage(); } else { ReportManage.ErrReport(this, "Pageオブジェクトが上流に見つかりません。"); } } else { ReportManage.ErrReport(this, "LoginClientオブジェクトが上流に見つかりません。"); } this.RunChildren(runChildren); } }
private string GetPageUrl() { IRawler currnet = this.Parent; while (currnet != null) { if (currnet is Page) { var page = currnet as Page; return(page.GetCurrentUrl()); } currnet = currnet.Parent; } return(string.Empty); }
private Page GetPage() { Page page = null; IRawler current = this.Parent; while (current != null) { if (current is Page) { page = current as Page; break; } current = current.Parent; } return(page); }
public void AddChildren(IRawler rawler) { rawler.Parent = this; children.Add(rawler); }