Selenium python find_element_by_class_name() stopped working from v 2.2 to 2.21 — cannot use 'Compound Class Name'


I am using Selenium’s python library to scrape data from a html page in Firefox.

I have had to update from Selenium 2.0 to 2.21 because the server has updated Firefox.

In v 2.21 calls to find_element_by_class_name("grid-cell-inner grid-col-name") fails with:

selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'

The class name of the element I am trying to access is grid-cell-inner grid-col-name

The call to find_element_by_class_name() worked in v 2.2, so the logic is correct, and the data used to be found OK. Something changed in v 2.21.

All the Selenium examples give simple examples with class name foo etc, and none with the type of name I need to access.

Why did Selenium stop supporting finding classes with names like grid-cell inner grid-col-name, and what it their solution?

Can someone please help me to find elements with “compound” class names?


  • You must to post comments

The problem about WebDriver is that it still evolves. A lot. I personally don’t know about a version that supported searching by many classes in one command, so it must have been a fairly old one :).

Searching by a CSS selector should work, however:


I don’t recommend using XPath for this particular thing, because these two following expressions are a different thing:

//*[class='grid-cell-inner grid-col-name']

//*[class='grid-col-name grid-cell-inner']

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.