【问题标题】:Edge Browser WebDriver Failure边缘浏览器 WebDriver 故障
【发布时间】:2015-11-16 11:24:09
【问题描述】:

正在尝试使来自http://blogs.windows.com/msedgedev/2015/07/23/bringing-automated-testing-to-microsoft-edge-through-webdriver/ 的代码工作。

得到一个丑陋的异常。

重现步骤。

通过提供的链接安装 Web 驱动程序(2015 年 7 月 24 日 WebDriver) 创建控制台应用程序。 Selenium.WebDriver、Selenium.Support 中的 Nuget。 运行代码,控制台窗口正常。

当代码访问 driver.Url="https://www.bing.com" 时,它会引发异常,如下所述。

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

我的 sn-p 如下:

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();
            }
        }
    }
}

}

【问题讨论】:

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


    【解决方案1】:

    行后:

    driver = new EdgeDriver(serverPath, options);

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

    如果您的路径不正确,它将无法通过“驱动程序”实例化。不知何故,您正在调用 driver.Url,我假设您正在使用该 serverPath 获得一些解决方案。所以可能是本地设备上的某些东西阻止了 MicrosoftWebDriver.exe 的运行。

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

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

    请务必从与 Edge 不同的浏览器访问该页面,因为它会杀死现有的 Edge 窗口,包括它自己。

    【讨论】:

      【解决方案2】:

      我有一点见解,但还没有解决方法或修复方法...

      在我的情况下,IE 的网络驱动程序服务器与我的边缘网络驱动程序服务器发生冲突......我仍然没有解决方法......我有一个在五种不同浏览器上运行的测试周期。

      当我尝试添加边缘时,它不会在不崩溃的情况下运行边缘。 调试文件夹中的 Web 驱动程序(包括 IE 在内的基本五个)名称与我运行 Edge 时包含的名称相同。

      我不知道如何修复它并满足测试要求......但是。 兄弟

      【讨论】:

        猜你喜欢
        • 2017-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-08
        • 2011-08-28
        • 1970-01-01
        • 2013-10-22
        • 2013-05-31
        相关资源
        最近更新 更多