Selenium python find_element_by_class_name() stopped working from v 2.2 to 2.21 -- cannot use 'Compound Class Name'
class-names, python, selenium, selenium-webdriver, webdriver
Solution
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:
find_element_by_css_selector(".grid-cell-inner.grid-col-name");
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']`
Problem
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?