2015-09-30 2 views
6

У меня возникли проблемы с поиском способа получения переменной для работы Selenium. Кажется, это сообщение помогло (Variable not working inside parenthesis), но я все еще не могу заставить его работать.Использование переменной в xpath в Python Selenium

Когда я использовал фактическое значение, он работает. В этом случае АЛ-Алабама. Я создал переменную с именем state, так что я могу просто позвонить , что в моей функции. У меня 13 состояний.

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

Этот параметр использует переменную состояния и, глядя на сообщение об ошибке, показывает значение переменной как AL-Alabama. Таким образом, похоже, что ссылается на правильное значение на веб-странице. Не уверен, что мне не хватает или почему он не работает. Любые рекомендации будут оценены.

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

Почему бы не использовать Select? –

+0

Я отметил сообщение @EGHM как ответ. Но для тех, кто может использовать эту информацию, я обнаружил, что Select также действительно работает. Я использовал Select (driver.find_element_by_class_name («c3»)). Select_by_visible_text (состояние). Не уверен, что я должен был поставить код в комментарии. – shavar

+1

@shavar, идущий с абстракцией Select, действительно намного более простой способ подойти к проблеме. – alecxe

ответ

4

Одиночные кавычки вокруг значения отсутствуют, как вы его закодировали. Попытка:

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

Да, это сделало. Значит, я не читал его как строку? Это поможет мне с другими моими проектами. Спасибо. – shavar

+0

Я думаю, что python читал его как строку. Я знаю из большого опыта, что эти цитаты вокруг значений после знака равенства требуются Selenium. – EGHM

+1

Супер-полезный. Благодарю. –

Смежные вопросы