複数の CSS クラスを持つ Web 要素の識別
@FindBy を使用して複数の CSS クラスを持つ Web 要素を識別する際に問題が発生しました注釈。コード例は className = "value test" の使用を示していますが、これは CSS クラス名をスペースで区切ることができるという事実を考慮していません。
XPath Matching Strategies
目的の要素を見つけるために XPath を使用することを検討してください。 XPath を使用すると、クラス名などの特定の基準に基づいて要素を照合できます。考慮すべき XPath マッチング戦略をいくつか示します。
driver.findElement(By.xpath("//div[@class='value test']"));
この XPath 式は完全一致を保証し、指定されたクラスの「value」クラスと「test」クラスの両方を持つ要素を検索しますorder.
driver.findElement(By.xpath("//div[contains(@class, 'value test')]"));
この式は、関係なく、「value」クラスと「test」クラスの両方を含む要素と一致します。
driver.findElement(By.xpath("//div[contains(@class, 'value') and contains(@class, 'test')]"));
この式は、要素が「value」クラスと「test」クラスの両方を持つことを保証しますが、特定の順序は強制しません。
代替としての CSS セレクター
XPath に加えて、CSSセレクターを使用して、複数のクラス名に基づいて要素を見つけることもできます。次の CSS セレクター式を考えてみましょう:
driver.findElement(By.cssSelector("div[class='value test']"));
driver.findElement(By.cssSelector("div[class*='value test']"));
driver.findElement(By.cssSelector("div.value.test"));
結論
XPath セレクターを使用する場合でも、CSS セレクターを使用する場合でも、要素を正確に識別するために、一致基準を慎重に検討することをお勧めします。要素に複数のクラスがある場合、前述の手法のいずれかを使用すると、目的の Web 要素を効果的に見つけることができます。
以上が複数の CSS クラスを持つ Web 要素を識別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。