How to avoid Compound Class name error in Page Object?
Use a CSS selector instead:
.country.name
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, the class
attribute is a space-separated list of classes. That means that if you have a class country name
, it's not one class, it's two different classes your element belongs to - the first is country
, the second is name
!
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.
You can use with this
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_leftBy.cssSelector("*[class^='tech']");By.cssSelector("*[class$='text_left']");
You can use one of these class names, for example
:class => 'country'
or
:class => 'name'
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:
:css => '.country.name'
and in case of :xpath:
:xpath => '//div[@class='country code']
both should work