2017-09-20 12 views
0

こんにちは、私はC#とセレンを使ってテスト自動化プロジェクトに取り組んでいます。私はExcelファイルから値を読み取っていますが、チェックボックスの値を読み込むのに問題があります。値を動的に読み取る方法がわかりません。単純なケースでシナリオは、ここに私の現在のソースコードです:セレンを使用してC#のチェックボックスの値を読み取る

class LoginPageObject 
{ 
    public LoginPageObject() 
    { 
     PageFactory.InitElements(PropertiesCollection.driver, this); 
    } 


    [FindsBy(How = How.CssSelector, Using = "[customid = '5624']")] 
    public IWebElement selectCheckbox { get; set; } 

    [FindsBy(How = How.Name, Using = "UserName")] 
    public IWebElement txtUserName { get; set; } 

    [FindsBy(How = How.Name, Using = "Password")] 
    public IWebElement txtPassword { get; set; } 

    [FindsBy(How = How.Name, Using = "Login")] 
    public IWebElement btnLogin { get; set; } 


    // Method to Perform Login 
    public PageObject Login(string userName, string password) 
    { 
     //Select checkbox 
     selectCheckbox.Click(); 

     // Send Username 
     txtUserName.EnterText(userName); 

     // Send Password 
     txtPassword.EnterText(password); 

     // Click Login Button 
     btnLogin.ClickSubmit(); 

     return new PageObject(); 
    } 
} 

これは正常に動作します、しかし私は、カスタムIDをハードコーディングされていない、よりダイナミックなアプローチを取りたい、このような何か:

class LoginPageObject 
{ 
    string value = "5624"; 
    public LoginPageObject() 
    { 
     PageFactory.InitElements(PropertiesCollection.driver, this); 
    } 


    [FindsBy(How = How.CssSelector, Using = "[customid = '"+ value + "']")] 
    public IWebElement selectCheckbox { get; set; } 

    [FindsBy(How = How.Name, Using = "UserName")] 
    public IWebElement txtUserName { get; set; } 

    [FindsBy(How = How.Name, Using = "Password")] 
    public IWebElement txtPassword { get; set; } 

    [FindsBy(How = How.Name, Using = "Login")] 
    public IWebElement btnLogin { get; set; } 


    // Method to Perform Login 
    public PageObject Login(string userName, string password, string value) 
    { 
     //Select checkbox 
     selectCheckbox.Click(); 

     // Send Username 
     txtUserName.EnterText(userName); 

     // Send Password 
     txtPassword.EnterText(password); 

     // Click Login Button 
     btnLogin.ClickSubmit(); 

     return new PageObject(); 
    } 
} 

上記のソースコードはコンパイルされないことは明らかですが、私はチェックボックスがハードコーディングされないようにこれにアプローチする方法を知りました。

答えて

0

FindsBy注釈では、Usingパラメータとしてconst文字列を使用できます。これはコンパイル時にも評価されます。

ページファクトリを使用していない場合も可能です。あなたはこのようなチェックボックスを見つけるだけです:

string value = "5624"; 
IWebElement checkbox = driver.FindElement(By.CssSelector("[customid = '"+ value + "']")); 
checkbox.Click(); 
関連する問題