Перейти к содержимому

Фотография

Переменная внутри локатора xpath


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 11:45

Добрый день, есть такая переменная serial_number, которая принимает определенное значение

если искать элемент таким образом:

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-12345']")

то все работает, но если использовать переменную, то такой элемент не находит, пробовал двумя способами

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-{0}'][' + serial_number']"
find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-{0}'].format(serial_number)")

  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 12:48

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.


  • 2

#3 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 12:57

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.

 

'sn-{0}'
а вот это мне куда деть?на странице код написан как sn-12345

а переменная принимает значение 12345, 23456, 34567 и т.д.


  • 0

#4 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 13:17

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.

 

'sn-{0}'
а вот это мне куда деть?на странице код написан как sn-12345

а переменная принимает значение 12345, 23456, 34567 и т.д.

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "']")

  • 2

#5 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 13:21

 

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.

 

'sn-{0}'
а вот это мне куда деть?на странице код написан как sn-12345

а переменная принимает значение 12345, 23456, 34567 и т.д.

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "']")

перед поиском переменную serialnumber необходимо приводить к строчному значению?


  • 0

#6 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 13:28

 

 

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.

 

'sn-{0}'
а вот это мне куда деть?на странице код написан как sn-12345

а переменная принимает значение 12345, 23456, 34567 и т.д.

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "']")

перед поиском переменную serialnumber необходимо приводить к строчному значению?

 

насколько я помню, можно не приводить. Она сама конвертнется


  • 1

#7 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 13:31

 

 

 

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.

 

'sn-{0}'
а вот это мне куда деть?на странице код написан как sn-12345

а переменная принимает значение 12345, 23456, 34567 и т.д.

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "']")

перед поиском переменную serialnumber необходимо приводить к строчному значению?

 

насколько я помню, можно не приводить. Она сама конвертнется

 

не работает, после serialnumber еще добавлен +, это если после 12345 есть еще какие-то значения?если их нет, то + не нужен?


  • 0

#8 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 13:34

 

 

 

 

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'" + serialNumber + "']")

из ковычек надо их вынуть. Так переменную не видно, она как строка распознается.

 

'sn-{0}'
а вот это мне куда деть?на странице код написан как sn-12345

а переменная принимает значение 12345, 23456, 34567 и т.д.

 

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "']")

перед поиском переменную serialnumber необходимо приводить к строчному значению?

 

насколько я помню, можно не приводить. Она сама конвертнется

 

не работает, после serialnumber еще добавлен +, это если после 12345 есть еще какие-то значения?если их нет, то + не нужен?

 

а что пишет ? скиньте стек ошибки. Нет , это для того что бы было корректное окончание xpath выражения


  • 0

#9 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 13:37

<span dir="ltr">sn-12345</span>

Вот так выглядит исходный код страницы. цифры 12345 меняются при повторном посещении страницы

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-12345']")

вот так селениум находит элемент и потом кликает по нему

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "']")

а так нет, у меня стоит условие, что браузер закрывается, если не найден такой элемент, в первом случае браузер не закрывается и ставится галочка, т.е. click()срабатывает


  • 0

#10 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 13:51

с какой ошибкой падает ? что в консоль пишет ?


  • 1

#11 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 13:53

find_serial_number = browser.find_element_by_xpath(".//*[contains(text(),'sn-" + serialNumber + "')]")

вот так попробуйте


  • 0

#12 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 13:53

с какой ошибкой падает ? что в консоль пишет ?

ни с какой, у меня стоит исключение и браузер просто перезапускается. где принт вывести?сразу после поиска?


  • 0

#13 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 13 марта 2018 - 13:56

 

с какой ошибкой падает ? что в консоль пишет ?

ни с какой, у меня стоит исключение и браузер просто перезапускается. где принт вывести?сразу после поиска?

 

попробуйте сначала вариант выше, а так да.


  • 1

#14 altezza072

altezza072

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 13 марта 2018 - 14:11

Спасибо больше за помощь, крайний вариант заработал!!


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных