Selenium ошибка только при запуске приложения, но не при отладке
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 12.12.22 19:51
Оценка:
падает на последней строке
KillProcesses();

            s_proxyServer = new ProxyServer();
            //        X509Certificate2 cert = new X509Certificate2(
            //System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6)
            //+ "\\proxy.pfx", "qaz123");
            //        s_proxyServer.CertificateManager.RootCertificate = cert;
            s_proxyServer.CertificateManager.EnsureRootCertificate();
            //s_proxyServer.CertificateManager.CreateRootCertificate(true);
            s_proxyServer.CertificateManager.CertificateEngine = CertificateEngine.DefaultWindows;//BouncyCastle;
            s_proxyServer.BeforeResponse += ProxyServer_BeforeResponse;
            var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Loopback, _port, true);
            explicitEndPoint.BeforeTunnelConnectRequest += ExplicitEndPoint_BeforeTunnelConnectRequest;
            s_proxyServer.AddEndPoint(explicitEndPoint);
            s_proxyServer.Start();
            ChromeOptions options = new ChromeOptions();
            options.AddArguments("--proxy-server=" + IPAddress.Loopback + ":" + _port);
            options.AddArguments("--window-size=20,20");
            options.AddArgument("user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36");

            options.AddArgument("headless");

            ChromeDriverService service = ChromeDriverService.CreateDefaultService();
            service.HideCommandPromptWindow = true;
            driver = new ChromeDriver(service, options);
            driver.Manage().Window.Minimize();

            driver.Navigate().GoToUrl("https://account.reverso.net/Account/Logout");
            var needLogout = IsElementPresent(By.XPath("//button[text() = 'Log out']"));
            string str;
            IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
            if (needLogout)
            {
                var logOutButton = driver.FindElement(By.XPath("//button[text() = 'Log out']"));
                str = "arguments[0].click()";
                js.ExecuteScript(str, logOutButton);
            }

            var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30));

            driver.Navigate().GoToUrl("https://account.reverso.net/Account/Login");

            wait.Until(c => c.FindElement(By.Id("Email")));

но когда в отладчике запускаю, то отрабатывает без ошибок
Re: Selenium ошибка только при запуске приложения, но не при отладке
От: vaa  
Дата: 13.12.22 01:23
Оценка:
Здравствуйте, dsalodki, Вы писали:

D>падает на последней строке


Неплохо бы тип ошибки, текст, стэктрэйс
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Selenium ошибка только при запуске приложения, но не при отладке
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 13.12.22 08:27
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Здравствуйте, dsalodki, Вы писали:


D>>падает на последней строке


vaa>Неплохо бы тип ошибки, текст, стэктрэйс


сейчас не могу дать, но типа элемент не найден — таймаут

вообще вроде пофиксил, может из-за обфускатора, он не корректно откатился наверное

фикс в том то сначала добавил код который в комментах и потом сбилдил запустил, потом закоментил и сделал код как сейчас

очень странно, поэтому думаю что из-за обфускатора

private bool IsElementPresent(By by)
        {
            try
            {
                driver.FindElement(by);
                //var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
                //wait.Until(x=>x.FindElement(by));
                return true;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.