-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();
}
}
感謝を参照して、ビューポートのサイズを変更する方法について
。それは実際にGoogleがユーザーエージェントに基づいて異なるHTMLを提供することに問題でした。私が使用していたBy.id( "")はPhantomには欠けています。私はBy.name( "q")を使用していることを示すためにコードを更新しました。これはより弾力的なクロスプラットフォームのようです。私はまた、問題を明らかにした例外時にページソースをダンプするコードを追加しました。 – user1701153
非常に良い!すべてをログに記録し、スクリーンショットを作成すると、PJSのデバッグが容易になります。 – Vaviloff