2016-12-12 2 views
0

これらの結果は、0.500秒未満の変動で安定しています。
それがChromeDriver
ChromeDriverがPhantomJSDriverよりも優れた性能を示す理由

上で実行するために13.991秒かかりPhantomJSDriver
上で実行するために16.779秒かかりこれは私が実行しているコードです:

//Starts Browser, Hides PhantomJS window and Navigates to Page 
var driverService = PhantomJSDriverService.CreateDefaultService(); 
driverService.HideCommandPromptWindow = true; 
Browser = new PhantomJSDriver(driverService); 

Browser.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromMilliseconds(1)); 

//Navigates to the website 
Browser.Navigate().GoToUrl("https://www.aapmegaform.com.au/racing/scratchings-and-conditions.aspx"); 

var lineElements = Browser.FindElements(By.CssSelector(".tableContentContainerInnerBox>div>table>tbody>tr")); 


foreach (var element in lineElements) 
{ 
    try 
    { 
     Console.WriteLine(element.FindElement(By.CssSelector(".scratchingTitle")).Text); 
    } 
    catch 
    { 
    }  
} 

のみ4 29個の要素が存在します。

PhantomsJSは、出力に「要素が見つかりません」例外を25回スローします。
PhantomJSの方がはるかに長いと思うのは妥当でしょうか?

答えて

2

これを行うには良い方法があります。親要素を探して、それぞれが子要素を探しているかどうかを探しています。 CSS Selectorを変更して、必要な要素だけを取得してください。下記の更新されたコードを参照してください。

varを使用する代わりに、常に特定のタイプを使用する必要があります。コードを読みやすくします。

このコードでは、try-catchを削除する必要はありません。これははるかに速くなければなりません。

ところで、暗黙の待機時間は1msに設定されています。それほど待たずにいるということはありません。有効期限が切れているかどうかをチェックするまでには、すでに期限切れです。代わりに1を使うつもりだったのでしょうか?以下のコードを暗黙のうちに待つ必要はありません。ほとんどすべての場合暗黙の待機を使用することをお勧めします。代わりに、必要に応じて明示的な待機(WebDriverWait)を追加します。

Browser.Navigate().GoToUrl("https://www.aapmegaform.com.au/racing/scratchings-and-conditions.aspx"); 
IReadOnlyCollection<IWebElement> lineElements = Browser.FindElements(By.CssSelector("h3.scratchingTitle")); 
foreach (IWebElement element in lineElements) 
{ 
    Console.WriteLine(element.FindElement(By.CssSelector(".scratchingTitle")).Text); 
} 
関連する問題