2017-01-09 5 views
0

私は、次の方法があります。ここではとSelenium

public static WebElement getElement(String element, WebDriver driver){ 

    Class<LoginPage> types=LoginPage.class;  
    java.lang.reflect.Field field=types.getDeclaredField(element); 
    field.setAccessible(true); 
    WebElement webelement=(WebElement)field.get(element); 
    return webElement; 
} 

はLoginPageクラスを使用していました。 getDeclaredFieldメソッドとfield.get(element)メソッドは、LoginPage.classで定義された フィールドを返します。 ClassNameの任意の型を取ることができるジェネリックClassメソッドをどのように定義できますか?

+0

ただ、メソッドのパラメータ 'クラス types'を追加します。あなたは何にこだわっていますか? – shmosel

+0

どのように動作しますか?あなたはクラスタイプ= Types.classを意味しました。 – user3640657

+0

このような問題が発生する場合は、Gebをご覧ください。ページオブジェクトモデルはおそらくあなたのためにこれ以上すべてを行うでしょう。サンプルコールで – chrylis

答えて

1

だけClass変数、メソッドパラメータ作る:

public static WebElement getElement(String element, WebDriver driver, Class<?> clazz){ 
    java.lang.reflect.Field field=clazz.getDeclaredField(element); 
    field.setAccessible(true); 
    WebElement webelement=(WebElement)field.get(element); 
    return webElement; 
} 

サンプルコール:

WebElement e = getElement("elementName", driver, LoginPage.class); 
+0

を実行すると、直接クラス名を取得できますか?実際にはいくつかのクラスがあるので、クラス名を指定して呼び出しを行うたびに – user3640657

+0

@ user3640657私はクラス名を "直接"取得することで何を意味するのかよく分かりません。 – shmosel

+0

例:WebElement e = getElement( "elementName"、driver、 .class) – user3640657