ТЕСТИРОВАНИЕ ДОСТУПНОСТИ СЕЛЕНА - PullRequest
0 голосов
/ 31 августа 2018

Я скачал последний rcx файл и добавил расширение в настройках chrome.

Первый шаг выполнен нормально. На втором этапе он выполняется до driver.Navigate (). GoToUrl ("chrome: // extensions-frame /");

Для следующего шага выдает эту ошибку

"OpenQA.Selenium.NoSuchElementException
HResult=0x80131500
Message=no such element: Unable to locate element: {"method":"xpath","selector":"//a[@class='extension-commands-config']"}
(Session info: chrome=68.0.3440.106)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.17134 x86_64)
Source=WebDriver
StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath)
at OpenQA.Selenium.By.<>c__DisplayClass19_0.<xpath>b__0(ISearchContext context)
at OpenQA.Selenium.By.FindElement(ISearchContext context)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
at Exsilio.QA.Test.DKNAccessabilityTest.AccessabilityTest() in C:\Trilok\Projects\Code\Automation Testing\RealTimeDataUpdate\QualityAssurance\Exsilio.QA.Test\DKNAccessabilityTest.cs:line 40"

Я использую "extension_1_0_9_0.crx" в качестве текущего расширения.

Пожалуйста, сделайте все необходимое.

Мой код указан ниже:

[TestInitialize]
        public void Init()
        {
            //Open ChromeDriver with appropriate extension enabled
            ChromeOptions options = new ChromeOptions();
            options.AddExtension("../Extension/extension_1_0_9_0.crx");
            driver = Driver.Initalize<ChromeDriver>(options);
        }
    [TestMethod]
    public void AccessabilityTest()
    {
        // 2 - setup key shortcut for extension
        driver.Navigate().GoToUrl("chrome://extensions-frame/");
        driver.FindElement(By.XPath("//a[@class='extension-commands-config']"))
            .Click();
        driver.FindElement(By.XPath("//span[@class='command-shortcut-text']"))
            .SendKeys(Keys.Control + "m");
        driver.FindElement(By.Id("extension-commands-dismiss"))
            .Click();

        // 3
        driver.Navigate().GoToUrl("http://www.google.pl");
        // 4 - open WAVE extension 
        new Actions(driver).KeyDown(Keys.Control).SendKeys("m").Build().Perform();

        // 5
        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until(ExpectedConditions.ElementExists(By.ClassName("wave5icon")));

        // 6
        var waveTips = driver.FindElements(By.ClassName("wave5icon"));
        if (waveTips.Count == 0) Assert.Fail(
            "Could not locate any WAVE validations - " +
            "please ensure that WAVE is installed correctly");
        foreach (var waveTip in waveTips)
        {
            if (!waveTip.GetAttribute("alt").StartsWith("ERROR")) continue;

            var fileName = String.Format("{0}{1}{2}",
                "WAVE", DateTime.Now.ToString("HHmmss"), ".png");
            var screenShot = ((ITakesScreenshot)driver).GetScreenshot();
            //screenShot.SaveAsFile(
            //    Path.Combine(System.IO.Path.GetTempPath(), fileName), ImageFormat.Png);
            driver.Close();
            Assert.Fail(
                "WAVE errors were found on the page. Please see screenshot for details");
            Assert.IsTrue(false, "One or more of the functionality tests failed : WAVE errors were found on the page. Please see screenshot for details");
        }

        //Assert.IsTrue(isAllPass, "One or more of the functionality tests failed");
    }

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

2 вещи. Они переместили ссылку, чтобы активировать горячие клавиши для ваших плагинов Chrome. Вы даже можете увидеть это, переключив любой из них вручную. Опция по-прежнему доступна @ chrome: // extensions, но она нигде не находится внизу страницы, это user id = menuButton.

Я также думаю, что даже если у вас включена опция, у вас будут проблемы с отправкой вашего CTRL + m в браузер.

0 голосов
/ 18 сентября 2018

Для ответа подойдет любая строка из вопроса, я использовал строки с расширением WAVE, и это было проблемой.

Я не пытался реализовать это с Wave . Это не работает для wave просто даст вам снимки для ошибки.

Из снимков вы не сможете понять, каковы ошибки или тип недостатков. Я предлагаю не идти на расширение WAVE для тестирования доступности. Вместо этого используйте инструмент " Globant.Selenium.Axe ". Установите плагин с помощью диспетчера пакетов Nuget

Вот ссылка для расширения Chrome.

Вот код для регистрации ошибок в текстовом файле:

 //If file does not exists, Create a new file and log the result.
            if (!File.Exists(accessiblityTestFileLocation))
            {
                File.Create(accessiblityTestFileLocation).Dispose();
                LogResult ();
            }
            //If file exists, Log the result into file.
            else if (File.Exists(accessiblityTestFileLocation))
            {
                LogResult ();
            }

Функция LogResult:

   public void LogResult ()
                {

     using (StreamWriter sw = new StreamWriter(accessiblityTestFileLocation))
        {
            foreach (var path in appInfo.Pages)
            {
                var navigateUrl = new Uri(baseUrl, path.Path);

                driver.Navigate().GoToUrl(navigateUrl);
                driverService.driver.Manage().Window.Maximize();

                AxeResult results = driver.Analyze();

                //Format the results, And write them in the text file.
                if (results.Passes.Length > 0)
                {
                    //Format the text as per your need, This text will be entered into the Text file.
                    sw.WriteLine("\n");
                    sw.WriteLine(path.Title);
                    sw.WriteLine("===========================");
                    sw.WriteLine("\n");

                    foreach (var passCase in results.Passes)
                    {
                        sw.WriteLine("Id: " + passCase.Id);
                        sw.WriteLine("Description: " + passCase.Description);
                        sw.WriteLine("Impact: " + "Normal");
                        sw.WriteLine("Help: " + passCase.Help);
                        sw.WriteLine("HelpURL: " + passCase.HelpUrl);
                        foreach (var node in passCase.Nodes)
                        {
                            sw.WriteLine(node.Html);
                            sw.WriteLine("\n");
                        }
                    }
                }

                //Format the results based on the result type, And write them in the text file.
                if (results.Violations.Length > 0)
                {
                    foreach (var violation in results.Violations)
                    {
                        //Write the accessibility test for the selected Attributes provided by the Axecore.
                        sw.WriteLine("Id: " + violation.Id);
                        sw.WriteLine("Description: " + violation.Description);
                        sw.WriteLine("Impact: " + violation.Impact);
                        sw.WriteLine("Help: " + violation.Help);
                        sw.WriteLine("HelpURL: " + violation.HelpUrl);
                        foreach (var node in violation.Nodes)
                        {
                            sw.WriteLine(node.Html);
                            sw.WriteLine("\n");
                        }
                    }
                }
            }
        }
                }

Спасибо за чтение, Удачного кодирования !!

...