2017-04-25 1 views
-2

変数に文字列をメソッド呼び出しに変換する必要があります。文字列をJavaのメソッド(.Sendkeysなど)に変換する方法は?

例:

変数:私の別のクラスにおいて

//Enter the name and value of the locator 
public String[] LoginID_Button = {"name","Log in"}; 

:名前が変数である

driver.findElement(By.loc1.LoginID_Button[0](loc1.LoginID_Button[1])).isDisplayed(); 

driver.findElement(By.name(loc1.LoginID_Button[1])).isDisplayed(); 

しかし、私は書く必要があるとして、文字列ですが、変更する必要があります方法として編集。これを行う方法?

答えて

0

これは反射と呼ばれます。実行時に構造/動作を変更する機能です。

これは約nice questionです。

あなたの問題については、その質問の受け入れられた回答と同じことをすることができます。上記のコードで

driver.findElement(By.class.getMethod(loc1.LoginID_Button[0],String.class).invoke(null,loc1.LoginID_Button[1])).isDisplayed(); 

、方法getMethod()動的この場合LoginId_Butt[0]その名前によって方法を見つけるために使用されます。メソッドが受け入れているパラメータの型を指定する必要もあります。この場合はStringです。

見つかったメソッドは、invoke()メソッドを使用して呼び出されます。 invoke()メソッドには2つの引数があり、最初は動的メソッドが実行されるインスタンスです。私たちの場合、動的メソッドは静的であるため、インスタンスはnullです。 2番目の引数は、動的メソッドに渡される引数のparamsです。この場合、渡すパラメータは1つだけです(LoginId_Butt[1])。

ノート

  1. 多くの例外に対するTY /キャッチがスローされる可能性があると、このコードをラップすることを忘れないでください。

  2. 変数名のJavaの命名規則を使用してくださいすなわちloginID_Button

関連する問題