Sto utilizzando la libreria Python di Selenium per analizzare i dati da una pagina html in Firefox.Python selenio find_element_by_class_name() ha smesso di funzionare dalla versione 2.2 alla 2.21 - non può utilizzare "Nome classe composto"
Ho dovuto aggiornare da Selenium 2.0 a 2.21 perché il server ha aggiornato Firefox.
In v 2.21 chiamate verso find_element_by_class_name("grid-cell-inner grid-col-name")
fallisce con:
selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'
Il nome della classe dell'elemento che sto cercando di accesso è grid-cell-inner grid-col-name
La chiamata a find_element_by_class_name()
lavorato in v 2.2, quindi la logica è corretto, e i dati utilizzati per essere trovati OK. Qualcosa è cambiato in v 2.21.
Tutti gli esempi di selenio forniscono esempi semplici con il nome di classe foo
ecc. E nessuno con il tipo di nome che è necessario accedere.
Perché il Selenium ha smesso di supportare la ricerca di classi con nomi come grid-cell inner grid-col-name
e quale è la loro soluzione?
Qualcuno può aiutarmi a trovare elementi con nomi di classi "composti"?
Grazie.
Non sta cercando da più classi; i nomi delle classi in html, su cui non ho controllo, hanno spazi in essi. Se questo è un "nome classe composto", allora perché smettere di supportarlo? Tutta la nostra logica è ora rotta. –
In realtà, no. Sono due classi separate, 'grid-cell-inner' e' grid-col-name', sono al 100% positivo su questo. Non conosco il motivo alla base del fatto che Selenium non supporta la ricerca in molti nomi di classe, ma suppongo che questo sia ciò a cui i selettori CSS servono. Se ha funzionato, deve essere stata una versione alfa o beta, perché non ho trovato alcuna menzione di questo in un log delle modifiche. Vai con la soluzione selettore CSS, che dovrebbe farlo. –
Un [quick googling] (http://www.w3schools.com/tags/att_standard_class.asp) dice questo: _Per specificare più classi, separare i nomi di classe con uno spazio, ad es. . Ciò consente di combinare diverse classi CSS per un elemento HTML ._ –