When I try to use the class name that having space class = "country name"
in page object, I'm getting:
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
How can I use the class name that having space.
Eg:
class = "country name"
You will have to either remove the space from the class name, in which case Selenium should still in theory find the elements you need or, use a CSS selector and combine it with a period/full stop to concatenate the class names together.
i.e, using a CSS selector to target this:
You could use:
or you could make your selector a bit more elaborate:
You can use one of these class names, for example
or
if it can't help you then you should switch to use other type of selector :css or :xpath
But note that in case of :css you write:
and in case of :xpath:
both should work
You can use with this
Use a CSS selector instead:
The important thing to note is that this example is wrong! If
"country name"
is meant as a name of a country, that is. Class names can't have spaces in them. In fact, theclass
attribute is a space-separated list of classes. That means that if you have a classcountry name
, it's not one class, it's two different classes your element belongs to - the first iscountry
, the second isname
!Therefore, fix your classes, if they're wrong. If they're not, use a CSS selector, it's the only reliable way to match multiple classes (apart from a very long and complicated XPath expression). Don't use trivial XPath expressions or CSS selectors with naive attribute comparison (
//*[@class='country name']
or*[class='country name']
), that's just plain wrong.If you have class names which have spaces in them you will get this error. One way of avoiding is creating an xpath for identifying the element. If you show the html I can create the xpath. Also try using class names as multiple objects will have the same class name.