如何重现Selenium错误-到远程WebDriver的HTTP请求在60秒后超时

时间:2019-05-23 07:21:45

标签: selenium internet-explorer-11

我遇到了Selenium Error - The HTTP request to the remote WebDriver timed out after 60 seconds中描述的相同错误。

为了更好地理解问题,我需要创建一个重现该错误的最小示例-一个html页面和一个使用Selenium打开它的控制台应用程序。

我的问题是:我究竟该如何重现该错误,即创建一个有意触发此错误的实验程序?

编辑:如果有帮助,请参考IEDriver. Download. HTTP request to the remote WebDriver server timed out after 60 seconds

  

这里的问题是,当IE正在下载文件时,浏览器的readyState永远不会从交互式变为完全

1 个答案:

答案 0 :(得分:1)

您可以尝试添加一个包含按钮控件的网页,在按钮单击事件中,可以调用Web API来获取数据。在Web API方法中,添加Thread。 sleep()方法在给定的时间量(大于请求时间)内停止执行线程。然后,如果使用Selenium WebDriver触发按钮单击事件,它将显示此错误。

这样的代码:

在mvc视图中的代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script>
    $(function () {
        $("#buttonSearchPro").click(function () {
              $.ajax({
                url: "@Url.Action("GetData", "Home")",
                async: false,
                success: function (data) {
                    alert(data);
                }
            });;
        });
    });
</script>
<input type="button" id="buttonSearchPro" class="btn btnAction" value="Download" />

MVC控制器中的代码:

    public ActionResult GetData()
    {
        Thread.Sleep(70000000);
        return Json("OK", JsonRequestBehavior.AllowGet);
    }

控制台应用程序中的代码:

    private const string URL = @"http://localhost:65330/Home/Index";
    private const string IE_DRIVER_PATH = @"D:\Downloads\webdriver\IEDriverServer_x64_3.14.0";
    static void Main(string[] args)
    {

        //EdgeWebDriver();
        InternetExplorerTest();
    }

    public static void InternetExplorerTest()
    {
        try{

        var options = new InternetExplorerOptions()
        {
            InitialBrowserUrl = URL,
            IntroduceInstabilityByIgnoringProtectedModeSettings = true
        };
        var driver = new InternetExplorerDriver(IE_DRIVER_PATH, options);
        driver.Navigate();
        //find the button and trigger click event.
        driver.FindElementById("buttonSearchPro").Click() ;
        driver.Close(); // closes browser
        driver.Quit(); // closes IEDriverServer process

        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }


        Console.WriteLine("OK");
        Console.ReadKey();
    }

结果如下:

enter image description here