2015-09-30 8 views
6

Ho avuto problemi a capire come far funzionare una variabile Selenium. Questo post sembra aver aiutato (Variable not working inside parenthesis) ma non riesco ancora a farlo funzionare.Utilizzo di una variabile in xpath in Python Selenium

Quando ho utilizzato il valore effettivo, funziona. In questo caso AL-Alabama. Ho creato una variabile chiamata stato in modo da poter chiamare semplicemente nella mia funzione. Ho 13 stati da correre.

driver.find_element_by_xpath("//option[@value='AL-Alabama']").click() 

Questo utilizza la variabile di stato e, guardando il messaggio di errore, mostra il valore variabile come AL-Alabama. Quindi sembra che stia facendo riferimento al valore corretto nella pagina web. Non sono sicuro di cosa mi manchi o perché non funziona. Qualsiasi guida sarebbe apprezzata.

driver.find_element_by_xpath('//option[@value=' + state + ']').click() 
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//option[@value=AL-Alabama]"} 
+0

Perché non utilizzare Seleziona? –

+0

Ho contrassegnato il post di @EGHM come risposta. Ma per coloro che potrebbero essere in grado di utilizzare queste informazioni, ho scoperto che Select funziona davvero. Ho usato Select (driver.find_element_by_class_name ("c3")). Select_by_visible_text (stato). Non sono sicuro se dovessi inserire il codice in un commento. – shavar

+1

@shavar andare con un'astrazione Select è davvero un modo molto più pulito per affrontare il problema. – alecxe

risposta

4

Le virgolette singole attorno al valore non sono presenti con il modo in cui è stato codificato. Prova:

driver.find_element_by_xpath("//option[@value='" + state + "']").click() 
+0

Sì, l'ho fatto. Quindi immagino che non lo stia leggendo come una stringa? Questo mi aiuterà con i miei altri progetti. Grazie. – shavar

+0

Penso che Python lo stia leggendo come una stringa. So per esperienza che le quotazioni intorno ai valori dopo il segno di uguale sono richieste da Selenium. – EGHM

+1

Super-utile. Grazie. –

Problemi correlati