class = "country name"
ページ オブジェクトにスペースがあるクラス名を使用しようとすると、次のようになります。
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
スペースのあるクラス名を使用するにはどうすればよいですか。
例えば:
class = "country name"
class = "country name"
ページ オブジェクトにスペースがあるクラス名を使用しようとすると、次のようになります。
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
スペースのあるクラス名を使用するにはどうすればよいですか。
例えば:
class = "country name"
代わりに CSS セレクターを使用します。
.country.name
注意すべき重要なことは、この例は間違っているということです! "country name"
国の名前を意味するなら、それはそうです。クラス名にスペースを含めることはできません。実際、class
属性はスペースで区切られたクラスのリストです。つまり、 class がある場合country name
、それは 1 つのクラスではなく、要素が属する2 つcountry
の異なるクラスです。1 つ目は、2 つ目はname
!
したがって、クラスが間違っている場合は修正してください。そうでない場合は、CSS セレクターを使用してください。これは、複数のクラスを一致させる唯一の信頼できる方法です (非常に長く複雑な XPath 式を除く)。//*[@class='country name']
素朴な属性比較 (または) で、簡単な XPath 式や CSS セレクターを使用しないでください。これは*[class='country name']
明らかに間違っています。
これで使えます
By.cssSelector("*[class^='classname']");
^ is for if you entering beginning of the class name,
$ is for if you entering ending of the class name usage example below with sample class name: tech random corner text_left
By.cssSelector("*[class^='tech']");
By.cssSelector("*[class$='text_left']");
クラス名からスペースを削除する必要があります。その場合、Selenium は理論上、必要な要素を見つけるか、CSS セレクターを使用してピリオド/ピリオドと組み合わせてクラス名を連結します。
つまり、CSS セレクターを使用してこれをターゲットにします。
<div class="country code"></div>
あなたが使用することができます:
div.country.code
または、セレクターをもう少し複雑にすることもできます。
div[class='country code']
クラス名にスペースが含まれていると、このエラーが発生します。回避する 1 つの方法は、要素を識別するための xpath を作成することです。html を表示すると、xpath を作成できます。また、複数のオブジェクトが同じクラス名を持つため、クラス名を使用してみてください。