Как воспроизвести ошибку Selenium - истек тайм-аут HTTP-запроса к удаленному WebDriver через 60 секунд - PullRequest
0 голосов
/ 23 мая 2019

Я сталкиваюсь с той же ошибкой, описанной в Selenium Error - истек тайм-аут HTTP-запроса к удаленному WebDriver через 60 секунд .

Чтобы лучше понять проблему, мне нужно создать минимальный образец, который воспроизводит ошибку - HTML-страницу и консольное приложение, которое использует Selenium для ее открытия.

Мой вопрос: как именно я могу воспроизвести ошибку, т.е. создать экспериментальную программу, которая намеренно вызывает эту ошибку?

Редактировать: В случае, если это помогает, согласно IEDriver. Скачать. Тайм-аут запроса HTTP к удаленному серверу WebDriver через 60 секунд :

Проблема здесь в том, что, когда IE находится в процессе загрузки файла, readyState браузера никогда не переходит от интерактивного к завершенному

1 Ответ

1 голос
/ 23 мая 2019

Вы можете попытаться добавить веб-страницу, которая включает элемент управления кнопкой, в событии нажатия кнопки вы можете вызвать веб-API для получения данных. В методе веб-API добавьте поток. Метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...