在Visual Studio / C#中使用PhantomJS 1.9.2的NoSuchElementException

时间:2016-10-30 03:25:58

标签: c# selenium selenium-webdriver phantomjs

我已阅读所有之前的帖子并尝试了所有建议。我通过截图验证了页面正在加载。在那。我有30秒的隐式等待,PhantomJS等待。我有一个完全限定的URL。我已经使用ChromeDriver测试了下面相同的简单代码片段,它可以通过翻转到该驱动程序来实现。有什么想法吗?

[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

1 个答案:

答案 0 :(得分:0)

Google可能会根据用户代理和/或视口大小使用不同的HTML代码进行响应。设置桌面浏览器的视口(如1280x1024)以获得桌面版本,而400x300的默认PhantomJS视口获得更轻的移动版本。

有关如何更改视口大小的信息,请参阅https://stackoverflow.com/a/23840494/2715393