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?
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']