2017-01-12 10 views
0

Selenium Frameworkで異なるid属性値を持つ異なる要素をクリックするにはどうすればよいですか? リンクahrefの値は同じテキストです。Selenium別のIDリンクをクリックしてください

<li> 
<a id="abc_differentName_1_default_fun" href="javascript:startClient('abc_differentName_1', 'default', 'fun');">Start</a> 
</li> 

<li> 
<a id="abc_differentName_2_default_fun" href="javascript:startClient('abc_differentName_2', 'default', 'fun');">Start</a> 
</li> 

<li> 
<a id="xyz_differentName_xyz_default_fun" href="javascript:startClient('xyz_differentName_xyz', 'default', 'fun');">Start</a> 
</li> 

すべてのリンクを1クリックする方法を作成したくありません。

私の問題は、すべてのリンクをクリックする方法を作成したくないということです。私は1つのクリックメソッドがID名に依存したいと思う。クリックメソッドの例を作成することができます:void clickByIdName(String idName)?? クリックしたリンクによって、新しいウィンドウ(他のページオブジェクト)が開きます。

アドバンスで多くの感謝。ページ上の類似したテキストを持つ複数のリンクがある場合は、void clickByIdName(String idName)

void clickByIdName(String idName) { 
    driver.findElement(By.Id(idName)).click(); 
} 
+0

'あなたは別のahref IDをクリック'を意味しますか?異なる 'id'属性値を持つ' a'要素を意味しますか? – Andersson

+0

はい。私は、ページ上で異なる要素idをクリックしようと考えています。すべてのリンクテキストは同じ「開始」です。 – zoram

答えて

0

のようなものが含まれていますidの値を使用して、次のように各要素を選択します。

driver.findElement(By.cssSelector("a#abc_differentName_1_default_fun")).click(); 
driver.findElement(By.cssSelector("a#abc_differentName_2_default_fun")).click(); 
driver.findElement(By.cssSelector("a#xyz_differentName_xyz_default_fun")).click(); 
+0

...そしてもう一度 - 閉じ括弧:) – Andersson

+1

私はあなたのコメントを待っていた:) –

+0

ありがとう。私の問題は、すべてのリンクをクリックする方法を作成したくないということです。 IDの名前に応じて1回のクリック方法が必要です。クリックメソッドの例を作成することができます:void clickByIdName(String idName)?? – zoram

0

をしたい場合はすることができます、

driver.findElements(By.cssSelector("[id*=_differentName_]")) 

:あなたはIDを持つすべての要素を見つけるために、CSSセレクタを使用することができます

+0

おかげで異なっています。私の問題は、すべてのリンクをクリックする方法を作成したくないということです。 IDの名前に応じて1回のクリック方法が必要です。クリックメソッドの例を作成することができます:void clickByIdName(String idName)?? – zoram

+1

ええ、 'public void clickByIdName(String idName){driver.findElement(By.id(idName))を試してみてください。 } ' – Andersson

+0

ありがとう! 今、私はテストケースでこのように使用しています。あなたはそれが悪いテスト方法/テストコードだと思いますか? pageObject.clickByGameName( "abc_gameName_default_funMode"); pageObject.clickByGameName( "abc_gameName_default_moneyMode"); – zoram

0

これらのID属性値を使用してリンク要素を特定する必要はありません。良い方法があります - リンクテキストロケータ。あなたはStartリンクテキストを持つすべてのリンクを見つけて選択することができた1あなたは、インデックスによってそれを得る必要があります。正確な問題はここで何

List<WebElement> links = driver.findElements(By.linkText("Start")); 
links.get(0).click(); 
+0

ありがとう。私の問題は、すべてのリンクをクリックする方法を作成したくないということです。 IDの名前に応じて1回のクリック方法が必要です。クリックメソッドの例を作成することができます:void clickByIdName(String idName)?? – zoram

+0

ありがとう! 今、私はテストケースでこのように使用しています。あなたはそれが悪いテスト方法/テストコードだと思いますか? pageObject.clickByGameName( "abc_gameName_default_funMode"); pageObject.clickByGameName( "abc_gameName_default_moneyMode"); – zoram

0

わからないが、何これらが間違っている:何

driver.findElement(By.id("abc_differentName_1_default_fun")).click(); 
driver.findElement(By.id("abc_differentName_2_default_fun")).click(); 
driver.findElement(By.id("xyz_differentName_xyz_default_fun")).click(); 
+0

ありがとう! 今、私はテストケースでこのように使用しています。あなたはそれが悪いテスト方法/テストコードだと思いますか? pageObject.clickByGameName( "abc_gameName_default_funMode"); pageObject.clickByGameName( "abc_gameName_default_moneyMode"); – zoram

関連する問題