Прокси для IE в Selenium не указан после нескольких успешных попыток - PullRequest
0 голосов
/ 10 мая 2019

возможно, кто-то может сказать, почему прокси останавливается для IE после ~ 50 тестов. Сначала все работает хорошо, прокси успешно установлен.

Selenium Автономный Сервер 3.141.59 Сервер драйверов Internet Explorer x64 3.141.59 (такой же x32)

Может быть, моя проблема описана в этом посте ? Если да, как освободить глобальные хуки?

Я посмотрел журналы драйверов и, скорее всего, ошибка в этом:

T 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\proxymanager.cpp(97) ProxyManager::SetProxySettings
D 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\proxymanager.cpp(100) Setting proxy for individual IE instance.
T 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\proxymanager.cpp(244) ProxyManager::SetPerProcessProxySettings
T 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\proxymanager.cpp(147) ProxyManager::BuildProxySettingsString
D 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\proxymanager.cpp(180) Built proxy settings string: ‘http=localhost:6666 ftp=localhost:6666 https=localhost:6666’
T 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\hookprocessor.cpp(105) Entering HookProcessor::Initialize
T 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\hookprocessor.cpp(164) Entering HookProcessor::InstallWindowsHook
W 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\hookprocessor.cpp(187) [Windows Error 126]: Unable to set windows hook
T 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\hookprocessor.cpp(258) Entering HookProcessor::PushData
W 2019-05-04 15:21:59:208 c:\projects\webdriver\cpp\iedriver\hookprocessor.cpp(260) No hook procedure has been set

Насколько я понимаю, WindowsHook перестает работать, но почему и как это исправить?

public override IWebDriver CreateRemoteDriver() {
    var options = GetOptions();

    return new RemoteWebDriver(new Uri(GridUri), options.ToCapabilities(), CommandTimeout);
}

public InternetExplorerOptions GetOptions() {
    InternetExplorerOptions options = new InternetExplorerOptions {
        IntroduceInstabilityByIgnoringProtectedModeSettings = true,
        InitialBrowserUrl = "about:blank",
        EnableNativeEvents = true,
        EnsureCleanSession = true,
        EnablePersistentHover = false,
        UsePerProcessProxy = true,
        ForceCreateProcessApi = true,
        BrowserCommandLineArguments = "-private"
    };

    var str = GetStrategyValueOrNull();
    if (str != null) options.AddAdditionalCapability(PageLoadStrategyCapabilityName, str);

    foreach(var capability in CapabilityProperties) {
        options.AddAdditionalCapability(capability.Name, capability.Value);
    }

    var proxy = GetProxy();

    if (proxy != null) {
        options.Proxy = GetProxy();
    }
    return options;
}

public Proxy GetProxy() {
    if (Proxy != null) {
        var proxy = new Proxy {
            Kind = ProxyKind.Manual,
            IsAutoDetect = false,
            HttpProxy = Proxy,
            SslProxy = Proxy,
            FtpProxy = Proxy
        };
        return proxy;
    }
    return null;
}
...