Выполнить тесты селена (хром) в AWS Lambda - NET Core - PullRequest
1 голос
/ 17 мая 2019

Попытка запустить тесты селена в AWS Lambda.Прочитайте ссылки ниже и почувствуйте уверенность в реализации подобных тестов с помощью NET Core 2.1.

Вот мой полный код лямбда-функции.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using Amazon.Lambda.Core;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;

    // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace selenium_lambda_poc1
{
    public class Function
    {

        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public void FunctionHandler(string input, ILambdaContext context)
        {
            context.Logger.LogLine("Starting...");
            var driver = GetDriver(context);
            driver.Navigate().GoToUrl(input);
            var title = driver.Title;
            LambdaLogger.Log("Window Title: " + title);
            driver.Quit();
            context.Logger.LogLine("Ending...");
        }

        public IWebDriver GetDriver(ILambdaContext context)
        {
            var lambdaTaskRootPath = Environment.GetEnvironmentVariable("LAMBDA_TASK_ROOT");
            context.Logger.LogLine(lambdaTaskRootPath);
            Environment.SetEnvironmentVariable("webdriver.chrome.driver", lambdaTaskRootPath + @"/Lib/chromedriver");

            ChromeOptions options = new ChromeOptions();
            options.BinaryLocation = lambdaTaskRootPath + "/Lib/chrome";
            var chromeBinaryPath = options.BinaryLocation;
            var chromeDriverPath = lambdaTaskRootPath + @"/Lib/chromedriver";

            context.Logger.LogLine("Chrome Path? " + chromeBinaryPath);
            context.Logger.LogLine("ChromeDriver Path? " + chromeDriverPath);
            context.Logger.LogLine("Chrome - Available? " + File.Exists(chromeBinaryPath).ToString());
            context.Logger.LogLine("ChromeDriver - Available? " + File.Exists(chromeDriverPath).ToString());


            options.AddArguments(new List<string>() {
                "--headless",
                "--disable-gpu",
                "--single-process",
                "--no-sandbox",
                "--data-path=/tmp/data-path",
                "--homedir=/tmp/homedir",
                "--disk-cache-dir=/tmp/cache-dir",
                "--allow-file-access-from-files",
                "--disable-web-security",
                "--disable-extensions",
                "--ignore-certificate-errors",
                "--disable-ntp-most-likely-favicons-from-server",
                "--disable-ntp-popular-sites",
                "--disable-infobars",
                "--disable-dev-shm-usage",
                "--window-size=1366,1024",
                "--enable-logging"
            });

            var driver = new ChromeDriver(lambdaTaskRootPath + "/Lib/", options, TimeSpan.FromMinutes(1));
            return driver;
        }
    }
}

Когда я тестирую свою лямбда-функцию, получаю следующее, и я боролся с той же проблемой в течение последних 3 дней.Был бы признателен, если кто-то может помочь мне здесь

Starting ChromeDriver 2.39.562737 (dba483cee6a5f15e2e2d73df16968ab10b38a2bf) on port 38471
Only local connections are allowed.
The HTTP request to the remote WebDriver server for URL http://127.0.0.1:38471/session timed out after 60 seconds.: WebDriverException
at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)
at selenium_lambda_poc.Function.GetDriver(ILambdaContext context) in C:\Users\sureshraja.s\source\repos\selenium-lambda-poc\selenium-lambda-poc\Function.cs:line 97
at selenium_lambda_poc.Function.FunctionHandler(String input, ILambdaContext context) in C:\Users\sureshraja.s\source\repos\selenium-lambda-poc\selenium-lambda-poc\Function.cs:line 34

at System.Net.HttpWebRequest.GetResponse()
at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo)
...