11

class = "country name"ページ オブジェクトにスペースがあるクラス名を使用しようとすると、次のようになります。

Compound class names not permitted Selenium::WebDriver::Error::UnknownError)

スペースのあるクラス名を使用するにはどうすればよいですか。

例えば:

class = "country name"
4

5 に答える 5

18

代わりに 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']明らかに間違っています。

于 2013-07-23T12:44:58.760 に答える
3

これで使えます

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']");
于 2014-12-15T13:16:07.060 に答える
0

クラス名からスペースを削除する必要があります。その場合、Selenium は理論上、必要な要素を見つけるか、CSS セレクターを使用してピリオド/ピリオドと組み合わせてクラス名を連結します。

つまり、CSS セレクターを使用してこれをターゲットにします。

<div class="country code"></div>

あなたが使用することができます:

div.country.code

または、セレクターをもう少し複雑にすることもできます。

div[class='country code']
于 2013-07-23T12:22:07.050 に答える
0

クラス名にスペースが含まれていると、このエラーが発生します。回避する 1 つの方法は、要素を識別するための xpath を作成することです。html を表示すると、xpath を作成できます。また、複数のオブジェクトが同じクラス名を持つため、クラス名を使用してみてください。

于 2013-07-23T11:26:35.753 に答える