2016-10-30 4 views
-1

以前の投稿をすべて読み、すべての提案を試しました。ページがスクリーンショットを撮ってロードされていることを確認しました。それはそこにあります。 PhantomJSが待つ30秒間の暗黙の待機があります。私は完全修飾URLを持っています。そして、私はChromeDriverで以下の簡単なコードスニペットをテストし、そのドライバにフリップすることで動作します。何か案は?NoSuchElementException Visual Studio/C#でPhantomJS 1.9.2を使用しています。

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void TestMethod1() 
    { 
     var d = new PhantomJSDriver(); 
     //var d = new ChromeDriver(); 

     try 
     { 
      var s = "abc"; 
      d.Manage().Window.Maximize(); 

      d.Manage().Timeouts().ImplicitlyWait(System.TimeSpan.FromSeconds(10)); 
      d.Navigate().GoToUrl("http://www.google.com"); 

      var e = d.FindElement(By.Name("q")); 
      e.SendKeys(s); 
      e.Submit(); 

      Assert.AreEqual<String>(s + " - Google Search", d.Title); 

     } 
     catch(Exception e) 
     { 
      ((ITakesScreenshot)d).GetScreenshot().SaveAsFile("c:\\exception.png", System.Drawing.Imaging.ImageFormat.Png); 
      Console.WriteLine(d.PageSource); 
      throw e; 
     } 
     finally 
     { 
      d.Quit(); 
     } 
    } 

PhantomJS Output Window

答えて

0

Googleのユーザーエージェントおよび/またはビューポートのサイズに応じて、異なるHTMLコードを持つ応答をしてもよいです。デスクトップ版(1280x1024など)のビューポートをデスクトップ版に設定し、デフォルトのPhantomJSビューポート(400x300)は軽いモバイル版を取得します。アドバイスVaviloffためhttps://stackoverflow.com/a/23840494/2715393

+0

感謝を参照して、ビューポートのサイズを変更する方法について

。それは実際にGoogleがユーザーエージェントに基づいて異なるHTMLを提供することに問題でした。私が使用していたBy.id( "")はPhantomには欠けています。私はBy.name( "q")を使用していることを示すためにコードを更新しました。これはより弾力的なクロスプラットフォームのようです。私はまた、問題を明らかにした例外時にページソースをダンプするコードを追加しました。 – user1701153

+0

非常に良い!すべてをログに記録し、スクリーンショットを作成すると、PJSのデバッグが容易になります。 – Vaviloff

関連する問題