2012-03-26 14 views
9

私はセレンについて尋ねる半曖昧な質問があります。私は、FirefoxDriverを使ってアクションを実行するいくつかの異なる方法を発見しました。私がしなければならないことは、ユーザーがWebページ(リンクをクリックする、チェックボックスをチェックするなど)で何度も実行するアクションです。ユーザーの操作を「記録」できる方法や組み合わせがありますか?ここで私はあなたがFirefox用Selenium IDEアドオンを使用してのために生成されたテストをエクスポートできるアクション(あなたは私がアクションを実行するためにWebDriverBackedSeleniumとアクションクラスを使用してみたことがわかります)セレンを使ったアクションの記録

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriverBackedSelenium; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Actions; 
import org.openqa.selenium.interactions.Action; 

public class MyReplayer { 
    public static void main(String[] args) throws Exception { 
     // The Firefox driver supports javascript 
     FirefoxDriver driver = new FirefoxDriver(); 

     driver.get("http://www.cs.umd.edu"); 

     List<WebElement> elements = driver.findElements(By.tagName("a")); 
     //WebDriverBackedSelenium driverBacked = new WebDriverBackedSelenium(driver,  "http://www.cs.umd.edu"); 
     Actions builder = new Actions(driver);  
     Action clickLink = builder.click(elements.get(100)).build(); 
     clickLink.perform(); 
     //driverBacked.click("document.getElementsByTagName('a')[100]"); 
    } 
} 

答えて

5

を実行するために、これまで持っているものですWebdriver。 FirefoxDriverは具体的には言いませんが、インターフェイスのメソッドは投稿したものと似ています。私はこれが役立つことを願っています

+0

の作成者とメンテナを知っていますでしょうか?それは私が自分自身を実装するために探している機能ですが、私はそれを手助けする方法はわかりません。 – user1294114

+0

Selenium IDEがどうしているのか分かりません。しかし、私は彼らがあなたが見ているページのDOMの変更イベントをキャッチすると思います。私はブラウザGUIにどのくらい統合されているのかわかりませんが、それも起こっている可能性があります。 そのほとんどはサーバー側でも見つかる可能性がありますが、サーバーにページを送信せずにチェックボックスがチェックされているかどうかを調べることは、クライアント上でのみ発生する可能性があります(またはすべてに対してajaxを呼び出さなければなりません) –

4

私はHuxleyに出くわしました。ユーザーアクションの記録と再生が可能です。私はどのようにしてこの質問を見つけましたが、ソースコードに頼らざるを得ませんでした。

huxley/run.pyの98〜154行目は、レコード機能を定義します。 webdirvierを使用してページ上にいくつかのjを実行し、いくつかのイベントリスナーを追加します。また、イベントを返す関数も追加されています。

(function() { 
var events = []; 
window.addEventListener('click', function (e) { events.push([Date.now(), 'click', [e.clientX, e.clientY]]); }, true); 
window.addEventListener('keyup', function (e) { events.push([Date.now(), 'keyup', String.fromCharCode(e.keyCode)]); }, true); 
window._getHuxleyEvents = function() { return events; }; 
})(); 

JS関数は

events = d.execute_script('return window._getHuxleyEvents();') 

と呼ばれるイベントを読み取ることがその後のイベントは、アプリケーション固有と思われる方法で格納されています。

申し訳ありませんが、私はJavaコードを持っていません。私はこれが役立つことを願っています

0

私は現在、このような何かをするプロジェクトに取り組んでいます:https://github.com/hristo-vrigazov/selenium-record-replay それはブラウザとアプリケーション間のプロキシを入れて、あなたが定義したアクションをリッスンJavaScriptを注入することによって動作します。例https://github.com/hristo-vrigazov/selenium-record-replay/blob/master/terminator-cli/src/main/java/browser/Main.java#L74

 RecordBrowserBase recordBrowserBase = new ChromeRecordBrowser(pathToChromedriver, pathToJSInjectionFile); 
     try { 
      recordBrowserBase.record(baseUrl); 
      System.out.println("Press Enter when finished recording"); 
      System.in.read(); 
      recordBrowserBase.dumpActions(outputFile); 
     } catch (IOException | InterruptedException | URISyntaxException e) { 
      e.printStackTrace(); 
     } 

     recordBrowserBase.cleanUp(); 

     System.exit(0); 

プロジェクトは非常に早い段階にとどまっているために参照してください、それは今でも使用することができます。現在はChromeのみがサポートされていますが、すぐに他のブラウザも追加します。

免責事項:私はあなたがセレンIDEは、ユーザーのアクションを記録することができますどのようにプロジェクト

関連する問題