Ho un problema: sto utilizzando il driver del selenio (firefox) per aprire una pagina Web, fare clic su alcuni collegamenti ecc. Quindi acquisire uno screenshot.Python - Selenium WebDriver - Esiste l'elemento di controllo
Il mio script funziona correttamente dalla CLI, ma quando viene eseguito tramite un cronjob non supera il primo test find_element(). Devo aggiungere un po 'di debug o qualcosa che mi aiuti a capire perché non funziona.
Fondamentalmente, devo fare clic su un'ancora di "accesso" prima di andare alla pagina di accesso. Il costrutto dell'elemento è:
<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>
Sto usando il find_element Con il metodo LINK_TEXT:
login = driver.find_element(By.LINK_TEXT, "log in").click()
Io sono un po 'di Python Noob, quindi sono in lotta con la lingua un po' ..
A) Come si verifica che il collegamento venga effettivamente rilevato da python? Dovrei usare try/catch block?
B) Esiste un modo migliore/più affidabile per individuare l'elemento DOM rispetto a LINK_TEXT? Per esempio. In JQuery, puoi usare un selettore più specifico $ ('a.lnk: contains (log in)'). Do_something();
Ho risolto il problema principale ed era solo un problema con le dita - stavo chiamando lo script con parametri errati - Semplice errore.
Mi piacerebbe ancora qualche indicazione su come verificare se esiste un elemento. Inoltre, un esempio/spiegazione di Wake impliciti/espliciti invece di utilizzare una chiamata time.leep() scadente.
Cheers, ns
È anche possibile trovare elementi in base al localizzatore CSS o xpath. Tende ad essere meno fragile rispetto al contenuto del testo. –
Credo che entrambi - utilizzando il testo del contenuto e XPATH/CSS - siano fragili a piccoli cambiamenti nel design piuttosto che nella logica dell'applicazione. Un modo migliore sarebbe trovare l'elemento con 'id',' class_name' o 'name'. –