IWebDriver
vsの並列実行をテストしていWebClient
ます。(パフォーマンスの違いとその大きさがある場合)
なんとかそうする前に、単純なWebClient-並列呼び出しで問題が発生しました。
実行されていないようですがAgilityPacDocExtraction
、の特定のラインにブレーキポイントを入れましたWebClient.DownloadString(URL)
ただし、デバッグの代わりにプログラムが終了すると、Step Into
yeald文字列が表示される可能性があります。
計画では、各アクションの「モード」セレクターを介して、実行する必要のあるすべてのアクションに対して単一のメソッドを用意し、次に、使用foreach
可能なすべてのEnum values
モードで反復する単純なメソッドを使用することでした。
主な実行:
static void Main(string[] args)
{
EnumForEach<Action>(Execute);
Task.WaitAll();
}
public static void EnumForEach<Mode>(Action<Mode> Exec)
{
foreach (Mode mode in Enum.GetValues(typeof(Mode)))
{
Mode Curr = mode;
Task.Factory.StartNew(() => Exec(Curr) );
}
}
モード/アクションセレクター
enum Action
{
Act1, Act2
}
実際の実行
static BrowsresFactory.IeEngine IeNgn = new BrowsresFactory.IeEngin();
static string
FlNm = Environment.CurrentDirectory,
URL = "",
TmpHtm ="";
static void Execute(Action Exc)
{
switch (Exc)
{
case Action.Act1:
break;
case Action.Act2:
URL = "UrlofUrChoise here...";
FlNm += "\\TempHtm.htm";
TmpHtm = IeNgn.AgilityPacDocExtraction(URL).GetElementbyId("Dv_Main").InnerHtml;
File.WriteAllText(FlNm, TmpHtm);
break;
}
}
保持WebClient
し、 IWebDriver
(セレンによって)ここに含まれていないクラスなので、この投稿でもう少しスペースを取ることはなく、今のところ関係ありません。
class BrowsresFactory
{
public class IeEngine
{
private WebClient WC = new WebClient();
private string tmpExtractedPageValue = "";
private HtmlAgilityPack.HtmlDocument retAglPacHtmDoc = new HtmlAgilityPack.HtmlDocument();
public HtmlAgilityPack.HtmlDocument AgilityPacDocExtraction(string URL)
{
WC.Encoding = Encoding.GetEncoding("UTF-8");
tmpExtractedPageValue = WC.DownloadString(URL); //<--- tried to break here
retAglPacHtmDoc.LoadHtml(tmpExtractedPageValue);
return retAglPacHtmDoc;
}
}
}
問題は、WebClientから抽出された値を介して変更されるはずのファイル内のコンテンツが表示されないことです。さらに、デバッグモードでは、上記のコードでコメントされた行にステップインできませんでした。私はここで何を間違っていますか?