Есть ли способ передать экземпляр webdriver из одного класса в другой в c# selenium?

#c# #selenium-webdriver

#c# #селен-веб-драйвер

Вопрос:

Я искал некоторое время и, похоже, ничего не могу найти на c# по этому поводу, только java и другие языки. Кто-нибудь знает, как/если это возможно, и может привести простой пример или указать мне документацию, доступную для чтения?

Очень благодарен 🙂

Ответ №1:

Вы можете напрямую передать экземпляр драйвера через конструктор, как это;

 public class Program {  private static void Main()  {  var driver = new ChromeDriver();   var instance = new AnotherClass();   instance.DoSomething();   Console.ReadKey(true);  } }  public class AnotherClass {  private readonly IWebDriver _driver;   public AnotherClass(IWebDriver driver)  {  _driver = driver;  }   public void DoSomething()  {  _driver.Navigate().GoToUrl("https://www.facebook.com/");   } }  

Или вы можете сохранить свой драйвер в свойстве и сделать свой основной класс статичным, чтобы вы могли получить к нему доступ из любого другого класса.

Комментарии:

1. Кажется, я могу сделать это в одном и том же файле, но я пытался сделать это в разных файлах (используйте один и тот же драйвер в script1.cs, а затем передайте его в script2.cs).

2. @TugaInVegas, не имеет значения, находится ли это в одном файле или нет. Представьте, что класс программы находится в файле script1.cs, а другой класс-в файле script2.cs.

3. Хорошо, значит, я должен как-то импортировать или вызывать другой класс правильно? Извините за глупые вопросы, но меня попросили очень быстро сделать кое-что из селена на c#, и я пытаюсь овладеть этим.

4. Да! Вы можете получить доступ к другим классам из других файлов.