#selenium #user-interface #xpath #dynamic #drop-down-menu
Вопрос:
Я новичок в этом сценарии с графическим интерфейсом…. Мое требование состоит в том, что я хочу нажать на стрелку раскрывающегося списка, и внутри есть несколько элементов с древовидной структурой, чтобы выбрать конкретный узел/сигнал тревоги..
Поэтому изначально мне нужно взломать XPATH для выпадающей стрелки «СЧЕТЧИКИ», введите описание изображения здесь
введите описание изображения здесь, используя Xpath, используя абсолютный Xpath, как показано ниже :
WebDriverWait(self.driver, 70).until(
EC.element_to_be_clickable((By.XPATH,
"/html/body/div/pm-application/epic-layout/div/div/div/div[5]/div[4]/epic-layout-panel/div/div/div/pm-reporting/epic-layout/div/div/div/div[3]/div[4]/epic-layout-panel/div/pm-tree-wrapper/div/div/div[1]/div[2]/div[1]/div[2]/div/div[2]/div/div[1]/div/div/div[3]/span/i")))
Также и с относительными путями :
-
WebDriverWait(self.driver, 70).until( EC.element_to_be_clickable((By.XPATH, "//div[@id='1483f603-ed09-6586-16e8-fc074ea8f908']//span//i[@class='icon tree-node-arrow collapsed']")))
-
WebDriverWait(self.driver, 70).until( EC.element_to_be_clickable((By.XPATH, "//*[@class='virtual-tree']//*[@class='icon tree-node-arrow collapsed']")))
- WebDriverWait(self.драйвер, 70).до тех пор, пока(
EC.element_to_be_clickable((По.XPATH,
«//i[@class=»дерево значков-узел-стрелка расширена»]»)))
Но все же я сталкиваюсь с проблемой ниже , пожалуйста, помогите мне решить эту проблему
Ошибка атрибута: объект ‘str’ не имеет атрибута ‘find_element’
Комментарии:
1. Предоставленные строки кода не могут быть причиной для предоставленной трассировки исключений. Показать точную строку, которая вызывает исключение
2. Я добавил полный html-код на скриншоте, пожалуйста, посмотрите
3. Нет необходимости проверять HTML-код. Покажите свой код. Исключение совершенно очевидно: вы пытаетесь вызвать метод
find_element
из строкового объекта. Показать строку кода сfind_element
. Также покажите, что находитсяEC
в вашем коде4. Ниже приведен код, который я использую
5. def search_counter_in_performance_manager(self): попробуйте: WebDriverWait(self.драйвер, 70).до тех пор, пока( EC.element_to_be_clickable((По.XPATH, «//div[@id=’1483f603-ed09-6586-16e8-fc074ea8f908′]//span//i[@class=’дерево значков-узел-стрелка свернута’]»))) WebDriverWait(self.драйвер, 70).до( кроме исключения BaseException: logger.fatal(«Фатальное исключение произошло внутри Счетчика Поиска В PM()».формат(self.name)) logger.error(traceback.print_exc()) В этом пути Xcode указаны числа, а не строка
Ответ №1:
Пожалуйста, прочитайте о селекторах CSS и селекторах Xpath. Им обоим не нравятся белые или пустые места.
Рекомендуется указывать Селену фактический тег элемента, а не только знак звездочки.
Вот пример элемента find с использованием селектора CSS:
- «div[класс*=’узел дерева’]»
Этот селектор вернет все элементы div, атрибут класса которых содержит фразу «узел дерева».
Используя xpath, вы также можете найти элементы по их атрибутам или по тексту, написанному внутри них:
- «//div[содержит(текст(),’333′)]»
Этот селектор выдаст все элементы div, внутри которых есть текст 333