Używam biblioteki python biblioteki Selenium do skrobania danych ze strony html w Firefoksie.Selenowy python find_element_by_class_name() przestał działać od wersji 2.2 do 2.21 - nie można użyć "Nazwa klasy złożonej"
Musiałem zaktualizować z Selenium 2.0 do 2.21, ponieważ serwer zaktualizował Firefox.
w V 2,21 wywołania find_element_by_class_name("grid-cell-inner grid-col-name")
nie powiedzie się z:
selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'
Nazwa klasy elementu Próbuję dostępu jest grid-cell-inner grid-col-name
Wezwanie do find_element_by_class_name()
pracował w V 2.2, więc logika jest poprawne, a dane okazały się prawidłowe. Coś zmieniono w wersji 2.21.
Wszystkie przykłady Selenium podają proste przykłady z nazwą klasy foo
itp., I żadne z typem nazwy nie jest wymagane.
Dlaczego firma Selenium przestała wspierać wyszukiwanie klas o nazwach takich jak grid-cell inner grid-col-name
i jakie są ich rozwiązania?
Czy ktoś może mi pomóc znaleźć elementy z nazwami "złożonych" klas?
Dzięki.
To nie jest poszukiwanie przez wielu klasach; nazwy klas w html, nad którymi nie mam kontroli, mają spacje w nich. Jeśli jest to "nazwa klasy złożonej", to po co przestać ją wspierać? Cała nasza logika jest teraz zepsuta. –
Właściwie nie. To dwie oddzielne klasy: 'grid-cell-inner' i' grid-col-name', jestem w 100% pozytywny. Nie znam powodu, dla którego Selenium nie wspiera wyszukiwania według wielu nazw klas - ale myślę, że właśnie do tego służą selektory CSS. Jeśli zadziałało, musiało to być kilka wersji alfa lub beta, ponieważ nie znalazłem żadnej wzmianki o tym w dzienniku zmian. Idź z rozwiązaniem selektora CSS, które powinno to zrobić. –
A [quick googling] (http://www.w3schools.com/tags/att_standard_class.asp) mówi tak: _ Aby określić wiele klas, oddziel nazwy klas za pomocą spacji, np. . Umożliwia to łączenie kilku klas CSS dla jednego elementu HTML._ –