<div class="value test" />
そのウェブ要素を特定したい。この2つのクラスのみが定義されています。 className
はスペースで区切られた値をとらないため、次のことはできません。代替手段とは何ですか?
@FindBy(className = "value test")
@CacheLookup
private WebElement test;
私はバラク・マノスの答えがそれを完全に説明したとは思わない。
次のような要素がほとんどないことを想像してください。
<div class="value test"></div>
<div class="value test "></div>
<div class="first value test last"></div>
<div class="test value"></div>
XPathの一致方法
マッチ1(完全一致)、バラクの答え
driver.findElement(By.xpath("//div[@class='value test']"));
マッチ1、2、3(マッチクラスにはvalue test
、クラスの順序が重要です)
driver.findElement(By.xpath("//div[contains(@class, 'value test')]"));
1、2、3、および4に一致します(要素にクラスvalue
およびtest
がある限り)
driver.findElement(By.xpath("//div[contains(@class, 'value') and contains(@class, 'test')]"));
また、このような場合、Css Selectorは常にXPath(高速、簡潔、ネイティブ)を優先します。
マッチ1
driver.findElement(By.cssSelector("div[class='value test']"));
マッチ1、2、3
driver.findElement(By.cssSelector("div[class*='value test']"));
マッチ1、2、3、4
driver.findElement(By.cssSelector("div.value.test"));
これを試して:
test = driver.findElement(By.xpath("//div[@class='value test']"));