2017-01-12 4 views
0

私はSeliniumを初めて使用しています。一致するクラス値(tdの開閉の間のテキストは変更されますが、一致する目的には関係ありません)に一致する各<td>click here</td>をクリックしたいテーブルがあります。一致しようとしているクラスの値はopenです。 From here私は正しい方法があることを学ぶ//*[contains(concat(" ", normalize-space(@class), " "), " open ")]クラスが一致するすべての要素をクリックする

これはちょうど1つのランダムなセルのために働くようです。どうすればそれをすべてクリックするのですか?私はこれを最初に達成し、そのステップを繰り返すことを計画していましたが、スクリプトはクラス値availableに対しても同様に行うべきであり、ただopenでなくてはならないことに注意する価値があります。

TL; DRは、私は...が異なりますが、それらを無視すべきことの例テキストです<td class="open">...</td>
<td class="available">...</td>で、すべてをクリックします。

+0

だから、 '​​クリックでここに 'または' ここをクリック '? – Andersson

+0

@Andersson 'ここをクリック'しかし、テキスト(例えば、ここをクリック)が変わるので、一致するものは 'オープン'です。申し訳ありませんが、これが混乱していた場合、私は問題が明らかになっています。 – Celeritas

答えて

0

すべての要素を取得するには、driver.FindElementsを使用してください。 driver.FindElementではなく、使用していることを確認してください。

3

すべての要素を取得してリストに格納し、それらの要素を反復して順番にボタンをクリックします。

List<WebElement> list = driver.findElements(By.xpath("//*[contains(concat(" ", normalize-space(@class), " "), " open ")]")); 
for(WebElement webelement : list) { 
     // webelement Click the button here 
} 
+0

これをSelenium IDE、FireFoxアドオンにどのように追加できますか? – Celeritas

+1

IDEプラグインは、これらのタイプのより高度な操作には制限があります。ループを作成し、要素クラスが一致するかどうかをチェックし、それをクリックする方法があるかもしれません。プログラミング言語を使い始めると、このような問題を本当に解決できるようにするには、セレニウムapiが私のヒントです。それ以外の人はあなたの質問に答えなければなりません! – StefanE

0

XPath次使用してください:

//td[normalize-space(@class)="open" or normalize-space(@class)="available"] 

これは、両方の<td class=" open ">...</td><td class=" available ">...</td>

+0

私の実際の質問は、各返された結果に対してどのように反復するのかと思います。私はSelenium IDEを使用していますが、ターゲットにはそのコマンドがあります。コマンドは 'クリックするだけですが、クリックするだけです。そして、私はそれがマッチするそれぞれをクリックするようにします。 – Celeritas

+0

私はこの目的のために 'while'ループを使うことができると思います。これを確認してくださいhttp://www.testingdiaries.com/selenium-ide-loop/ – Andersson

0

使用して、次のアプローチを一致させる必要があり、あなたを助けるかもしれない -

List<WebElement> allElements = driver.findElements(By.tagName("td")); 

for(WebElement element:allElements) 
{ 
    if(element.getAttribute("class").contains("open")) 
    { 
     // manipulate with <td> tag data 
    } 
} 
+0

これは、Selenium IDE、FireFoxアドオンにどのように追加できますか? – Celeritas

+0

「Selenium IDE」で同じロジックを実行する方法はないと思われますが、条件やループを管理するための追加プラグインがあります – NarendraR

+0

Selenium IDEが弱すぎる場合は、ソースコードを実行するために何を使用する必要がありますか?例えば、別のプログラムを書くための通常のアプローチです。 Javaを使用してSeleniumを実行しますか? – Celeritas

関連する問題