私はSeleniumを初めて使用します。以下は私のコードです。
<input type="submit" id="button" value="Edit"/>
同じタイプ、ID、値のボタンが3つあります。各ボタンをクリックするにはどうすればよいですか?誰かがXPathを手伝ってくれますか?
// input [1]や// input [2]などのインデックスベースのxpathを使用します。
私は次の方法でそのような問題を解決しました:
String cssSelectorOfSameElements="input[type='submit'][id='button']";
List<WebElement> a=driver.findElements(By.cssSelector(cssSelectorOfSameElements)) ;
a.get(0).click();
//a.get(1).click();
//a.get(2).click();
クリックする必要のあるボタンによって異なります。これがあなたのために働くことを願っています。
独立した要素を特定するまず、依存する要素を特定できる投稿を投稿します。
たとえば、インド、アメリカ、オーストラリアなどの国の横にボタンがあるとします。 USAの横にあるボタンをクリックしたい場合は、USAを識別するためのxpathを記述し、htmlツリーを一歩後退して、すべての人に100%機能するボタンを識別します。
私たちができるもう1つの最も簡単な方法があります一意のxpathを見つけますどちらかを生成できます
indexing like xpath =(// input [@ id = 'ndncchk'])[0]、xpath =(// input [@ id = 'ndncchk'])[1]、xpath =( // input [@ id = 'ndncchk'])[2]
または、absolute xpathの方法を見つけることができます:
ファイアバグに到達>ファイアバグを開く>ファイアパスに移動>生成された絶対xpathを選択した小さなドロップダウンリストがあります:
次のようになります。
html/body/div[1]/form[1]/div[2]/div/div[2]/div[2]/div/div[3]/div[17]/div[2]/input[1]
html/body/div[1]/form[1]/div[2]/div/div[2]/div[2]/div/div[3]/div[17]/div[2]/input[2]...
これは、chrome consoleから複数のコンボボックスを見つけようとしたときに機能しました。
$x("//select[@class='form-control']")[1]
すべてのオプションが下にある正しいコンボボックスが返されました。
//input[@id='button' and @value='Edit'][1]
をお試しください。一般に、親ノードが何であるかを確認し、おそらく親が一意になるように指定します。