2017-02-07 4 views
0

私はいくつかのタスクを自動化するためにC#でwebdriverを使用しようとしています。別の方法でIWebDriver変数を参照するにはどうすればよいですか?

IWebDriver driver = new ChromeDriver(); 

をしてから、ボタンがクリックされたとき、私はこのようなイベントハンドラでそのメソッドを参照します:

private void testButton_Click(object sender, EventArgs e) 
{ 
logInAutomation(); 
} 
問題がある

、私がする必要がある私は、このようなlogInAutomationというメソッドを作成しました再びIWebDriverを参照するが、私はそれをコーディングする方法を知っている唯一の方法は、再入力することです:別のクロームウィンドウが開くことになり

IWebDriver driver = new ChromeDriver(); 

を。新しいウィンドウを開くことなく、イベントハンドラメソッドでIWebDriverをどのように参照するのですか?申し訳ありませんが、私の専門用語がオフの場合、私はコーディングが新ですので、明確化が必要な場合はお知らせください。

は、ここで全体のコードです:

namespace Automation_Suite 
{ 
    public partial class redSuite : Form 
    { 

     public redSuite() 
     { 
      InitializeComponent(); 
     } 

     static public void logInAutomation() 
     { 
      //Opens Chrome Window and navigates to Autoloop Log in 
      IWebDriver driver = new ChromeDriver(); 
      driver.Url = "DESTINATION URL"; 

      //Finds Username field and enters username 
      IWebElement element = driver.FindElement(By.Name("USERNAME LOG IN")); 
      element.SendKeys("USERNAME"); 

      //Finds Password field and enters password 
      element = driver.FindElement(By.Name("PASSWORD AUTOMATION")); 
      element.SendKeys("PASSWORD"); 

      //Clicks Submit 
      driver.FindElement(By.Id("SUBMIT BUTTON")).Click(); 
     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void hostedGalleryBtn_Click(object sender, EventArgs e) 
     { 
      logInAutomation(); 

      IWebElement element = element = driver.FindElement(By.Name("COMPANY ID")); 
      element.SendKeys("ID NUMBER"); 
     } 
    } 
} 
+0

既に定義した既存の「ドライバ」で作業できませんか?単に 'driver.'(' .'を書き留めてください)を実行し、あなたが達成しようとしているもののためにメソッドを参照してください。 「* IWebDriverをもう一度参照する」*を希望しているとしたら、追加のイベントハンドラ呼び出しで何をしたいのですか? – gravity

+0

ドライバはどこで定義されていますか?それはクラスにあるのかメソッドの中にあるのですか?クラス内で宣言すると、メソッド内で使用できるようになります。 – bwoogie

+0

オリジナルの投稿を更新したので、コードを見ることができるようになりました。 新しいWebブラウザを開かずに、hostedGalleryBtn_Clickメソッド内のlogInAutomationメソッドに既に記述されているIWebDriverをどのように使用できるかを調べようとしています。 –

答えて

0

あなたがいないメソッドの内部で、class field memberとして「ドライバ」を定義する必要がありますが、クラススコープ内の代わりに。

namespace Automation_Suite 
{ 
    public partial class redSuite : Form 
    { 
     private IWebDriver driver = new ChromeDriver(); //define driver here so you can use it in methods. 

     public redSuite() 
     { 
      InitializeComponent(); 
     } 

     public void logInAutomation() 
     { 

      driver.Url = "DESTINATION URL"; 

      //Finds Username field and enters username 
      IWebElement element = driver.FindElement(By.Name("USERNAME LOG IN")); 
      element.SendKeys("USERNAME"); 

      //Finds Password field and enters password 
      element = driver.FindElement(By.Name("PASSWORD AUTOMATION")); 
      element.SendKeys("PASSWORD"); 

      //Clicks Submit 
      driver.FindElement(By.Id("SUBMIT BUTTON")).Click(); 
     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void hostedGalleryBtn_Click(object sender, EventArgs e) 
     { 
      logInAutomation(); 

      IWebElement element = element = driver.FindElement(By.Name("COMPANY ID")); 
      element.SendKeys("ID NUMBER"); 
     } 
    } 
} 
+0

ah ha!私は前にそれを試み、同じ問題を抱えていた。 私はちょうどメソッドの "静的プライベート"タグが欠けていたようです。あなたの助けをありがとう! –

+0

あなたのクラスisnt静的なので、私は私の答えの静的を削除しました。デフォルトではプライベートなので、わかりやすくするために追加したいと思います。これがあなたの質問に答えるならば、それをそうであるとマークすることを忘れないでください;) – bwoogie

関連する問題