private IWebDriver CrieWebDriver(ConfiguracaoDeTela configuracaoDeTela)
        {
            switch (configuracaoDeTela.Browser)
            {
            case EnumBrowsers.CHROME:
                return(CrieDriverChrome(configuracaoDeTela));

            case EnumBrowsers.CHROME_HEADLESS:
                return(CrieDriverChrome(configuracaoDeTela, "--headless", "--disable-gpu", "--hide-scrollbars", "--no-sandbox"));

            case EnumBrowsers.PHANTOMJS:
                return(CrieDriverPhantomJS(configuracaoDeTela));

            case EnumBrowsers.IE:
                new NotImplementedException("Browser não implementado.");
                return(null);

            case EnumBrowsers.FIREFOX:
                new NotImplementedException("Browser não implementado.");
                return(null);

            default:
                throw new ArgumentException(string.Concat("O browser ", configuracaoDeTela.Browser.ToString(), " não é suportado pelos testes de interface gráfica."));
            }
        }
        private static ConfiguracaoDeTela CrieConfiguracaoDeTela(Configuration arquivoDeConfiguracao, bool utilizaRelatorioLegal)
        {
            var timeoutPadrao         = ObtenhaConfiguracaoDeTimeout(arquivoDeConfiguracao);
            var browser               = ObtenhaConfiguracaoDeBrowser(arquivoDeConfiguracao);
            var pastaDeBinarios       = ObtenhaPastaDeBinarios();
            var urlInicialDaAplicacao = ObtenhaUrlLogin(arquivoDeConfiguracao);
            var urlInicialDoProduto   = ObtenhaUrlAplicacao(arquivoDeConfiguracao);
            var utilizaScreenshot     = ObtenhaUtilizaScreenshot(arquivoDeConfiguracao);
            var proxyType             = ObtenhaProxyType(arquivoDeConfiguracao);
            var login          = ObtenhaLogin(arquivoDeConfiguracao);
            var senha          = ObtenhaSenha(arquivoDeConfiguracao);
            var tipoDeAmbiente = ObtenhaTipoDeAmbiente(arquivoDeConfiguracao);

            var configuracaoDeTela = new ConfiguracaoDeTela
            {
                TipoDeAmbiente    = tipoDeAmbiente,
                Timeout           = timeoutPadrao,
                Browser           = browser,
                PastaDeBinarios   = pastaDeBinarios,
                UrlLogin          = urlInicialDaAplicacao,
                UrlAplicacao      = urlInicialDoProduto,
                UtilizaScreenshot = utilizaScreenshot,
                ProxyType         = proxyType,
                Login             = login,
                Senha             = senha
            };

            return(configuracaoDeTela);
        }
        private ChromeDriver CrieDriverChrome(ConfiguracaoDeTela configuracaoDeTela, params string[] argumentos)
        {
            var options = CrieChromeOptions(argumentos);

            var driverChrome = new ChromeDriver(configuracaoDeTela.PastaDeBinarios, options);

            ////driverChrome.Manage().Window.Maximize();
            driverChrome.Manage().Window.Size = _resolucao;

            return(driverChrome);
        }
        public ComponenteDeTela(ConfiguracaoDeTela configuracaoDeTela)
        {
            ConfiguracaoDeTela = configuracaoDeTela;
            _webDriver         = CrieWebDriver(ConfiguracaoDeTela);
            _acoesDeScript     = new AcoesDeScript(this);
            _acoesDeEspera     = new AcoesDeEspera(this);
            _acoesDeTeclado    = new AcoesDeTeclado(this);
            _acoesDeMouse      = new AcoesDeMouse(this);
            _acoesDeDocument   = new AcoesDeDocument(this);

            _wait = new WebDriverWaitCustomizado(this, ConfiguracaoDeTela.Timeout);

            DefinaTimeoutsImplicitos();
        }
        private PhantomJSDriver CrieDriverPhantomJS(ConfiguracaoDeTela configuracaoDeTela)
        {
            var options = new PhantomJSOptions();

            options.AddAdditionalCapability("takesScreenshot", false);

            var service = PhantomJSDriverService.CreateDefaultService(configuracaoDeTela.PastaDeBinarios);

            service.IgnoreSslErrors = true;
            service.ProxyType       = configuracaoDeTela.ProxyType;
            service.SslProtocol     = "any";

            var driverPhantomJS = new PhantomJSDriver(service, options);

            ////driverPhantomJS.Manage().Window.Maximize();
            driverPhantomJS.Manage().Window.Size = _resolucao;

            return(driverPhantomJS);
        }