2016-10-14 12 views
4

clj-webdriverを使用してウェブサイトフォームをテストしています。フォームフィールドに同じクラスがある場合は、(input-text)関数の使い方を知りたいです。同じクラスのフォームフィールドを入力する方法

(input-text)定義からは、「クエリqで見つかった最初のフォーム要素に文字列sを入力します。

(input-text ".class") 

すべてのフィールドが同じクラスであるため、最初のフィールドだけが塗りつぶされます。同じクラスのすべてのフィールドを区別する方法はありますか?

フォームのフィールドはセレクタとしてclasstypeしかありません。

答えて

3

input-textは、最初のマッチを埋めるありがとうございます。

quick-fillをすべて使用してください。

例:,:

(quick-fill {".class" "s"}) 

/編集

オブジェクトobject-済 "クラスである場合も、同じクラスの2つのフィールドのために私が値として2と3を入力する必要があります。そして、" あなたが言います"私はクラスを"オブジェクト "と見なすことができますか?私はあなたが後者で何を意味するかは確かではありませんが、異なる要素に異なる値を追加したいということを理解しています。

特定の要素find-elementsを使うことができます。これらはコレクションを返します。 F elements

(find-elements {:class ".class"}) 

これは、彼らがページに表示される順番でクラス「の.class」を持つすべての要素を検索します。

コレクションが可変テキストに格納されている場合は、インデックスに基づいてinput-textを介してすべての要素に追加できます。たとえば、増加するインデックスを追加する場合は、map-indexedを使用して、次のようにすべての値のインデックスを追加することができます(doallが呼び出されて、レイジーシーケンス内のすべての要素が処理されます)アクセスしdoallが)それが起こる作るされています

(defn fill! 
    "Fills all elements with class class with increasing numbers." 
    [class] 
    (let [elements (find-elements {:class class})] 
    (doall 
    (map-indexed (fn [index element] 
        (input-text element (str index))) 
        elements)))) 

この関数は、(fill! ".class")のように呼ばれています。

これが役に立ちます。

+0

あなたは2つのフィールドのための例を与えることができます。 :) – joey

+0

私は同じクラスの2つのフィールドを意味します。値として2と3を入力する必要があります。クラスが "オブジェクトオブジェクト完了"である場合、クラスを ".object"と見なすことができます – joey

+0

ありがとうございます!それは大きな助けとなりました:) – joey

0

(find-elements [webelement by])関数を使用すると、 'webelements matching a given by`のリストが返されます。

https://github.com/semperos/clj-webdriver/wiki/Introduction%3A-Taxiで見つけることができるプロジェクトのドキュメント、から、例は次のとおりです。


(defn css-finder 
    "Given a CSS query `q`, return a lazy seq of the elements found by calling `find-elements` with `by-css`. If `q` is an `Element`, it is returned unchanged." 
    [q] 
    (if (element? q) 
    q 
    (core/find-elements *driver* {:css q}))) 
+0

私は実際にテストする方法だけを学んでいます。その日は2日しかなかった。私はドライバーが何であるか分かりませんし、もう少し説明することができますか?トラブルで申し訳ありませんが、ありがとう – joey

+0

確かに。ドライバ(実際にはWebDriver)は、Seleniumがテストに使用されているブラウザを駆動するために使用するものです。詳細は、[the documentation](http://www.seleniumhq.org/projects/webdriver/)を参照してください。 –

+0

ドライバにどのような名前空間と依存関係を使用する必要がありますか。私はcljウェブドライバータクシーを使用しています – joey

関連する問題