Как передать переменную Python в выражение XPath? - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я работаю над сценарием, который печатает идентификатор веб-элемента на основе заданного текста.До сих пор мне удавалось сделать это:

wait.until(lambda browser: browser.find_element_by_xpath("//*[contains(text(), 'my_text')]"))
ID = browser.find_element_by_xpath("//*[contains(text(), 'my_text')]").get_attribute("id")
print(ID)

Код работает нормально, но я хочу изменить его, чтобы он мог использоваться для строк, отличных от «my_text».

Как передать переменную этой функции?Примерно так:

variable = 'my_text'
wait.until(lambda browser: browser.find_element_by_xpath("//*[contains(text(), variable)]"))
ID = browser.find_element_by_xpath("//*[contains(text(), variable)]").get_attribute("id")
print(ID)

Таким образом, я мог бы присвоить переменной любой текст и использовать одну и ту же функцию каждый раз.

Спасибо!

Ответы [ 4 ]

0 голосов
/ 29 января 2019

Вы также можете попробовать это. Надеюсь, это сработает.

 variable = 'my_text'
 wait.until(lambda browser: browser.find_element_by_xpath("//*[contains(text(),'" + variable + "')]"))
 ID = browser.find_element_by_xpath("//*[contains(text(),'" + variable + "')]").get_attribute("id")
 print(ID)
0 голосов
/ 29 января 2019

Попробуйте использовать следующий код:

variable = "my_text"
your_needed_xpath = "//*[contains(text(), '{}')]".format(variable)

Надеюсь, это поможет вам!

0 голосов
/ 29 января 2019

Сделайте следующее - просто включите переменную в {} и добавьте «f» перед строкой:

variable = 'my_text'
wait.until(lambda browser: browser.find_element_by_xpath(f'//*[contains(text(), {variable})]'))
ID = browser.find_element_by_xpath(f'//*[contains(text(),{variable})]').get_attribute("id")
print(ID)

Это называется интерполяция строки .

0 голосов
/ 29 января 2019

Вы можете сначала отформатировать ваш шаблон xpath перед передачей его методу.

pattern = "//*[contains(text(), %s)]" % variable
ID = browser.find_element_by_xpath(pattern).get_attribute("id")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...