2015-09-30 21 views
6

Mam problemy z ustaleniem, jak uzyskać zmienną do pracy Selenium. Wydawało się, że ten post pomógł (Variable not working inside parenthesis), ale nadal nie mogę go uruchomić.Używanie zmiennej w xpath w Pythonie Selenium

Kiedy użyłem rzeczywistej wartości, działa. W tym przypadku AL-Alabama. Stworzyłem zmienną o nazwie stan, dzięki czemu mogę po prostu zadzwonić , że w mojej funkcji. Mam 13 państw, przez które muszę przejść.

Ten używa zmiennej stanu i patrząc na komunikat o błędzie pokazuje wartość zmiennej jako AL-Alabama. Wygląda więc na to, że jest to odniesienie do poprawnej wartości na stronie internetowej. Nie jestem pewien, czego mi brakuje lub dlaczego nie działa. Wszelkie wskazówki będą mile widziane.

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

Dlaczego nie używać Wybierz? –

+0

Oznacziłem post przez @EGHM jako odpowiedź. Ale dla tych, którzy mogą być w stanie wykorzystać te informacje, stwierdziłem, że Select również działa. Użyłem Select (driver.find_element_by_class_name ("c3")). Select_by_visible_text (state). Nie jestem pewien, czy powinienem umieścić kod w komentarzu. – shavar

+1

@shavar going with a Select abstrakcja jest rzeczywiście znacznie czystszym sposobem podejścia do problemu. – alecxe

Odpowiedz

4

Pojedyncze cudzysłowy wokół wartości nie występują wraz z zakodowaniem. Wypróbuj:

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

Tak, to zrobiłem. Więc myślę, że to nie było czytanie go jako struny? Pomoże mi to w moich innych projektach. Dziękuję Ci. – shavar

+0

Myślę, że Python odczytał go jako ciąg znaków. Wiem z dużego doświadczenia, że ​​selekcja wymaga notowań wokół wartości po znaku równości. – EGHM

+1

Super-pomocny. Dzięki. –