2017-04-04 12 views
0

現在、私はC#でのセレンとphantomjsを使用して、次のコードを持っている:ヘッドレスブラウザC#と代替

public class Driver 
{ 
    static void Main() 
    { 
     using (var driver = new PhantomJSDriver()) 
     { 
      driver.Navigate().GoToUrl("https://www.website.com/"); 
      driver.Navigate().GoToUrl("https://www.website.com/productpage/"); 
      driver.ExecuteScript("document.getElementById('pdp_selectedSize').value = '10.0'"); //FindElementById("pdp_selectedSize").SendKeys("10.0"); 
      driver.ExecuteScript("document.getElementById('product_form').submit()"); 
      driver.Navigate().GoToUrl("http://www.website/cart/"); 
      Screenshot sh = driver.GetScreenshot(); 
      sh.SaveAsFile(@"C:\temp\test.jpg", ImageFormat.Png); 
     } 
    } 
} 

私の目標は、私のカートに製品を追加すると、自動的にチェックアウトすることができることです。スクリーンショットは、コードが正常に機能しているかどうかをテストするためだけに含まれています。私の最初の問題は、製品ID「pdp_selectedSize」の要素が見つからないというエラーが頻繁に発生することです。 Webdriverがまだページをロードしていないので、特定のタイムアウトを設定することなくそれを見つけるまでチェックを続ける方法を探しています。

ヘッドレスブラウザではなく、より高速な代替手段を探しています。私はページ上でチェックアウトできるように特定のクッキーが必要なので、http要求の代わりにヘッドレスブラウザを使用しました。これらのクッキーはページ内のjavascriptによって設定されます。誰かが速い方法のためのreccommendationを持っているなら、それは非常に感謝します、ありがとう!

+0

[Selenium Reference](http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp)の 'ExpectedConditions'を見てください。 – Brian

+0

WebDriverWaitのその部分ですか? – JBoy

+0

これは 'WebDriverWait'と組み合わせて動作します。 – Brian

答えて

0

あなたの最初の質問では、ExpectedConditions' which is part of the WebDriverWait class inセレンを使用することにしてください。次のコードサンプルはここから取得されたもので、参照点としてのみ機能します。

using (IWebDriver driver = new FirefoxDriver()) 
{ 
    driver.Url = "http://somedomain/url_that_delays_loading"; 
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
    IWebElement myDynamicElement = wait.Until<IWebElement>(d => 
    d.FindElement(By.Id("someDynamicElement"))); 
} 

詳細はWebDriverWaitshereです。

あなたの2番目の質問に関しては、それは私の意見では本当に主観的なことです。ヘッドレスブラウザは、必ずしも実際のブラウザよりも速くも遅くもありません。このarticleを参照してください。

+0

JavaScriptを処理するためにWebRequestクラスで動作するものはありますか? – JBoy

+0

私は100%確信していません。しかし、「Selenium」には「JSExecutor」クラスがあります。 – Brian

関連する問題