как вызвать элемент в статическом пустоте? - PullRequest
1 голос
/ 25 мая 2019

Я делаю небольшую программу селена с C #. Я хочу подождать максимум 5 секунд для взаимодействия кнопки или чего-то еще, если она видна. Я сделал код для него, но я не могу назвать этот код внутри static void main, он говорит, что объект является обязательным нестатическим полем. Как это исправить ? ошибка: ссылка на объект требуется для нестатического поля, метода или свойства 'Program.waitForPageUntilElementIsVisible (By, int)

Программа класса { общедоступный драйвер IWebDriver;

    static void Main(string[] args)
    {
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("https://www.mail.com/int/");
        IWebElement login = driver.FindElement(By.Id("login-button"));
        login.Click();
        IWebElement email = driver.FindElement(By.Id("login-email"));
        waitForPageUntilElementIsVisible(By.Id("login-email"), 5);
        email.SendKeys("CarlosdanielGrossen95@mail.com");


    }


        public  IWebElement waitForPageUntilElementIsVisible(By locator,int maxseconds)
    {


       return new  WebDriverWait(driver, TimeSpan.FromSeconds(maxseconds))
            .Until(ExpectedConditions.ElementExists((locator)));
    }

}
}

Ссылка на объект требуется для нестатического поля, метода или свойства 'Program.waitForPageUntilElementIsVisible (By, int)

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Сделайте метод статичным.

        public static IWebElement waitForPageUntilElementIsVisible(By locator,int maxseconds)
    {


       return new  WebDriverWait(driver, TimeSpan.FromSeconds(maxseconds))
            .Until(ExpectedConditions.ElementExists((locator)));
    }
0 голосов
/ 27 мая 2019

Определите этот метод в отдельном классе и вызовите этот метод с PageWait Object.

public class PageWait
{
  public  IWebElement waitForPageUntilElementIsVisible(By locator,int maxseconds)
    {
       return new  WebDriverWait(driver, TimeSpan.FromSeconds(maxseconds))
            .Until(ExpectedConditions.ElementExists((locator)));
    }
}

class Program { 
public IWebDriver driver;

    static void Main(string[] args)
    {
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("https://www.mail.com/int/");
        IWebElement login = driver.FindElement(By.Id("login-button"));
        login.Click();
        IWebElement email = driver.FindElement(By.Id("login-email"));
        new PageWait().waitForPageUntilElementIsVisible(By.Id("login-email"), 5);
        email.SendKeys("CarlosdanielGrossen95@mail.com");

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...