Python Selenium выберите динамический xpath с переменной

#python #selenium #selenium-webdriver #xpath #bdd

#питон #селен #селен-веб-драйвер #xpath #bdd

Вопрос:

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

 wait.until(EC.visibility_of_element_located((By.XPATH,"//div[text()='Hierarchy']/following::input[@id='label-input']")))  

По умолчанию-Тест будет меняться произвольно, и у меня есть способ получить это значение, но мне не удалось использовать переменную в поиске XPath:Метод тестирования 1 не работает

 dtg_found = "Default-Test"   

Метод тестирования 2 не работает, это фактический метод определения значения

 dtg_opt_1 = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[text()='"   label_name   "']/following::input[@id='label-input']")))   

Столкнувшись с ошибкой ниже:

Ответ №1:

Попробуйте использовать f-строки, как показано ниже:

 dtg_opt_1 = wait.until(EC.visibility_of_element_located((By.XPATH, f"//div[text()={label_name}]/following::input[@id='label-input']")))  

Комментарии:

1. Это не сработало для меня 🙁 Я ожидаю, как показано ниже, функции . деф введите_валюе_валюе_втекстовое поле(self, имя_метки, значение_метки): # self.input_элемент(By. XPATH, f»//div[текст()={имя метки}]/следующее::ввод[@id=’ввод метки’]», значение метки) ele = self.driver.find_element_by_xpath(f»//div[текст()={имя метки}]/следующее::ввод[@id=’ввод метки’]») self.driver.execute_script(«аргументы[0].нажмите();», элемент)