Как работать со страницей, которая никогда полностью не загружается из-за Google Analytics, используя Selenium C#

У меня есть пример, когда страница, на которую я перехожу, никогда полностью не загружается в тестовых средах, хотя все элементы графического интерфейса видны, это результат сценария keepalive.php, который поддерживает подключение к Google Analytics и другим аналитическим сценариям внутри. код ожидания отправки и получения информации. Так как мы не собираем статистику внутри сети, скрипт никогда не завершается и страница не загружается полностью.

При переходе на страницу вручную нажатие Escape останавливает запуск скрипта и загружает страницу, поэтому я попытался использовать действия Selenium:

Actions action = new Actions(driver);
action.SendKeys(Keys.Escape);

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

К сожалению, удаление или изменение кода keepalive.php и Google Analytics в наших тестовых средах не является жизнеспособным вариантом, скорее наш пакет автоматизации должен обойти это.


person MatthewThomasGB    schedule 17.02.2016    source источник


Ответы (2)


Вы можете установить PageLoadTimout. При этом Selenium будет выдавать ошибку, когда не сможет загрузить сайт в указанное время, которую вы можете поймать и продолжить. Не очень элегантно, к сожалению.

driver.Manage().Timeouts().SetPageLoadTimeout(timespan)

Взято из Selenium WebDriver - Как настроить загрузку страницы Тайм-аут с использованием C#

Согласно Время ожидания загрузки страницы - Selenium Webdriver с использованием C# это возможно, что не каждый браузер поддерживает тайм-аут.

person Sosian    schedule 17.02.2016

Установите неявное ожидание равным нулю.

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(0));

и ждать элементов явным ожиданием

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
    {
        return d.FindElement(By.Id("someDynamicElement"));
    });
person Leon Barkan    schedule 21.02.2016