Столкновение с проблемой при создании надстройки, Visual Studio, G1ANT - PullRequest
0 голосов
/ 10 июля 2020

Я попытался создать аддон, используя существующие коды аддона селена и ресурсы. Мне удалось создать аддон с помощью всего одной команды (для тестирования), чтобы открыть Flipkart. Я использовал код команды selenium.open и немного отредактировал его, введя значение по умолчанию для аргумента URL как (flipkart.com). Мне удалось создать свое решение (я убедился, что добавил все пакеты nuget и другие необходимые вещи). Теперь, когда я пытаюсь загрузить аддон в своей студии, я получаю сообщение об ошибке, в котором говорится, что это ожидаемый постфикс команды для команды FlipkartOpen. Может ли кто-нибудь сообщить мне причину этой ошибки и, возможно, возможное решение для ее исправления?

Вот изображение ошибки: Ошибка G1ANT Studio для нового дополнения.

А вот мой пример кода:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
using System.Text;
using G1ANT.Language;
using OpenQA.Selenium;


namespace G1ANT.Addon.Flipkart.Commands
{
    [Command(Name = "Flipkart.Open", Tooltip = "This command opens flipkart in a web browser provided in the Argument.")]
    public class FlipkartOpen : Command
    {
        public FlipkartOpen(AbstractScripter scripter) : base(scripter)
        {

        }
        public class Arguments : CommandArguments
        {
            // Enter all arguments you need
            [Argument(Required = true, Tooltip = "Name of a web browser")]
            public TextStructure Type { get; set; } = new TextStructure(string.Empty);

            [Argument(DefaultVariable ="Url",  Tooltip = "Website Url")]
            public TextStructure Url { get; set; } = new TextStructure("www.flipkart.com");

            [Argument(DefaultVariable = "timeoutselenium", Tooltip = "Specifies time in milliseconds for G1ANT.Robot to wait for the command to be executed")]
            public override TimeSpanStructure Timeout { get; set; } = new TimeSpanStructure(SeleniumSettings.SeleniumTimeout);

            [Argument(Tooltip = "By default, waits until the webpage fully loads")]
            public BooleanStructure NoWait { get; set; } = new BooleanStructure(false);

            [Argument(Tooltip = "Result variable")]
            public VariableStructure Result { get; set; } = new VariableStructure("result");
        }

        

        // Implement this method
        public void Execute(Arguments arguments)
        {
            try
            {
                SeleniumWrapper wrapper = SeleniumManager.CreateWrapper(
                    arguments.Type.Value,
                    arguments.Url?.Value,
                    arguments.Timeout.Value,
                    arguments.NoWait.Value,
                    Scripter.Log,
                    Scripter.Settings.UserDocsAddonFolder.FullName);
                int wrapperId = wrapper.Id;
                OnScriptEnd = () =>
                {
                    SeleniumManager.DisposeAllOpenedDrivers();
                    SeleniumManager.RemoveWrapper(wrapperId);
                    SeleniumManager.CleanUp();
                };
                Scripter.Variables.SetVariableValue(arguments.Result.Value, new IntegerStructure(wrapper.Id));
            }
            catch (DriverServiceNotFoundException ex)
            {
                throw new ApplicationException("Driver not found", ex);
            }
            catch (Exception ex)
            {
                throw new ApplicationException($"Error occured while opening new selenium instance. Url '{arguments.Url.Value}'. Message: {ex.Message}", ex);
            }
        }
    }
}

1 Ответ

0 голосов
/ 10 июля 2020

Чтобы удалить эту ошибку, при добавлении нового класса напишите Command.cs в конце при добавлении. Попробуйте FlipkartopenCommand.cs Это должно устранить вашу ошибку.

...