私は、セレンを使ってログインアクションを実行するために使用されるjavaクラスを持っています。現在、10種類以上のログインタイプがあり、悪いと思われるものがたくさんあり、効率的ではありません。実行時にJavaコードをコンパイル
例:コード以外の
if (logintype == 1)
{
driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys(password);
driver.findElement(By.id("signin")).click();
}
else if (logintype ==2)
{
driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys(password);
driver.findElement(By.id("signin")).click();
}
...........
...........
新しいコード効率的ではないがプッシュされ、書き込む必要があると、サーバは新しいログインモジュールが追加されるたびに再起動する必要があります。
私はログインのロジックをdbに保存できるかどうか、また実行時にコンパイルできるかどうかを確認したいと考えました。私はグルーヴィーシェルを見つけましたが、結果をクラスファイルに戻す方法はわかりません。 groovyシェルを実行すると、多くのコード変更が必要になります。それは可能ですか?
public class ExecuteAuth implements Runnable{
private WebDriver driver;
driver = new FirefoxDriver(firefoxBinary, profile, cap);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
//MongoDB code
DBCursor dbObjects = loginCollection.find();
while (dbObjects.hasNext()) {
DBObject dbObject = dbObjects.next();
loginModule.add(new LoginModule((BasicDBObject) dbObject));
String loginType = (String) dbObject.get("loginType")
String script;
if (loginType.equals("1")) {
script = (String) dbObject.get("script")
}
}
GroovyShell shell = new GroovyShell();
shell.evaluate(script);
RUN REST OF THE LOGIN LOGIC AFTER THE CODE IS EVALUATED
}
あなたはこのルートをつもりなら、私は[ゲブ](http://gebish.org)を見てみたいです特にページオブジェクト。 – chrylis
Javaプログラムの既存のクラスを再コンパイルして、プログラムを実行している間に再読み込みしたいのですか? – Turing85
ログインプロセスをアプリケーションの他の部分とは独立したサービスにしてみませんか?その後、メインアプリケーションとは独立して変更して再デプロイすることができます –