私はこのボタンを持っています:-
<div class="dsk-col-1-4 card new">
<div class="div_center_div">
<span class="icon icon_plus-black-symbol"></span>
<h2>Create</h2>
</div>
</div>
しかし、私はクラス名で要素を検索してみました:-
driver.findElementByClassName("dsk-col-1-4 card new").click();
しかし、それは機能しません。何か助けは?
「by class name」ロケーターは通常、単一のクラス名が渡されることを期待します。
driver.findElementByClassName("card").click();
複数のクラスを使用する場合は、「CSSセレクターによる」を使用します
driver.findElementByCssSelector(".card.new").click();
dsk-col-1-4
クラスは、要素ロケータにあまり適していません。これは、bが変更される可能性が高いだけでなく、要素とその目的に関する情報も含まないレイアウト指向のクラス名に非常によく似ています。一方、card
とnew
の方が適しています。
わかりましたので、クリックする要素を正確に理解できませんでした。そのため、私の想定に基づいて、以下のXpathsを試してください。
1)クリックしたいのが<div class="dsk-col-1-4 card new">
の場合
//div[contains(@class,'dsk-col-1-4 card new')]
2)クリックしたい場合は、
//span[contains(@class,'icon icon_plus-black-symbol')]
3)クリックするのが<h2>Create</h2>
の場合、
//h2[text()='Create']
お役に立てれば!!
ロケーター内で複数のクラス名を渡しています。どちらも要素に割り当てられていますが、findElementByClassName関数は実際には単一のクラス名である場合にのみ機能します。私が行う方法は、findelement(By.Xpath())を使用することです。この場合、使用する必要があります。
webDriver.findElement(By.xpath("//div[contains(@class,'dsk-col-1-4 card new')]")).click();