边缘浏览器WebDriver失败

时间:2015-08-22 16:52:01

标签: c# internet-explorer selenium-webdriver windows-10 microsoft-edge

尝试从http://blogs.windows.com/msedgedev/2015/07/23/bringing-automated-testing-to-microsoft-edge-through-webdriver/生成代码。

得到一个丑陋的例外。

Repro步骤。

从提供的链接安装网络驱动程序(2015年7月24日WebDriver) 创建控制台应用。 Nuget in Selenium.WebDriver,Selenium.Support。 运行代码,控制台窗口就可以了。

当代码命中driver.Url =“https://www.bing.com”时会引发异常,如下所示。

NoSuchWindowException - WebDriver.dll中发生未处理的“OpenQA.Selenium.NoSuchWindowException”类型异常

我的摘要如下:

using System.IO;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
namespace WebDriverPlay
{
public class msedgedev_sample
{
    public static void RunMSEdgeDevSample()
    {
        Console.WriteLine("running MSEdgeDev Sample");
        RemoteWebDriver driver = null;
        string serverPath = "Microsoft Web Driver";
        try
        {
            if (System.Environment.Is64BitOperatingSystem)
            {
                serverPath = Path.Combine(System.Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), serverPath);
            }
            else
            {
                serverPath = Path.Combine(System.Environment.ExpandEnvironmentVariables("%ProgramFiles%"), serverPath);
            }

            // location for MicrosoftWebDriver.exe
            EdgeOptions options = new EdgeOptions();
            options.PageLoadStrategy = EdgePageLoadStrategy.Eager;
            driver = new EdgeDriver(serverPath, options);

            //Set page load timeout to 5 seconds
            driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(5));

            //string _url = @"https://www.bing.com/";
            string _url = @"http://www.google.com";
            Console.WriteLine("_url=" + _url);
            driver.Url = _url;

        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            if (driver != null)
            {
                driver.Close();
            }
        }
    }
}

}

2 个答案:

答案 0 :(得分:1)

行后:

driver = new EdgeDriver(serverPath,options);

执行,您应该看到一个命令窗口打开并连接到Edge。如果Edge浏览器已经打开,它将关闭它并打开一个新实例。根据您的错误,我不相信您看到了这种行为,我是否正确?如果是这样,某些东西可能会阻止WebDriver Server在本地启动(Defender ??)。检查条件设置serverPath。我无法解析Is64BitOperatingSystem,因此我选择了正确的路径并删除了其余的条件,将serverPath设置为MicrosoftWebDriver.exe的位置。

如果您的路径不正确,则不会超过"驱动程序"实例。不知何故,你正在向驱动程序.Url调用,我假设您正在使用该serverPath获得一些解决方案。因此,本地设备上的某些内容可能会阻止MicrosoftWebDriver.exe运行。

同样,您应该看到一个显示正确通信记录的命令提示符。

最后一个提示,您可以转到MicrosoftWebDriver.exe并运行它。然后你可以去:http://dev.modern.ie/testdrive/demos/webdriver/和"发送请求"使用默认值,应该是创建会话。您将看到结果发布到页面,并在命令窗口中查看通信记录。

请务必从与Edge不同的浏览器转到该页面,因为它会终止现有的Edge窗口,包括其自身。

答案 1 :(得分:1)

我有一点见解,但不是解决方法或修复,但......

在我的情况下,IE的Web驱动程序服务器与我的Web驱动程序服务器冲突...我仍然没有解决方法...我有一个在五个不同浏览器上运行的测试循环。

当我尝试添加边缘时,它不会在没有崩溃的情况下运行边缘。 调试文件夹中的Web驱动程序(对于基础五,包括IE)名称是IDENTICAL到我运行Edge时包含的名称。

我不知道如何解决它并满足测试要求......是的。 兄弟