Selenium IDE, как извлечь идентификатор атрибута с помощью XPath

Я пытаюсь получить идентификатор и сохранить его как переменную со следующим кодом:/

Команда Цель Ценить сохранить ценность xpath=(//div[@class[starts-with(.,'commentItem')]]/@id)[1] Идентификатор

но я получил это сообщение об ошибке:

хранить значение на xpath=(//div[@class[starts-with(.,'commentItem')]]/@id)[1] со значением Ошибка идентификатора: 11:54:55 Результат выражения xpath "(//div[@class[starts-with(.,'commentItem')]]/@id)[1]" это: [объект Аттр]. Это должен быть элемент.

Я попробовал это выражение xpath в консоли, и оно работает, но получить этот идентификатор здесь невозможно.

Вы получаете эту ошибку, потому что это недействительный локатор xpath. Вы можете просмотреть несколько примеров, чтобы узнать, как правильно использовать xpath для поиска веб-элементов. Если возможно, поделитесь своим кодом (или его частью), чтобы другие могли помочь.

Pramesh 05.04.2024 13:55

@Pramesh XPath действителен. ОП заявил в своем вопросе, что он использовал его в консоли, и это сработало... не вернуло ошибку. В сообщениях об ошибках также четко указано это.

JeffC 05.04.2024 16:47

Вы пробовали читать документацию? атрибут магазина

JeffC 05.04.2024 16:47

@id выбирает атрибут.... значение хранилища ожидает веб-элемент.

browsermator 05.04.2024 19:10

Привет, я попробовал, но теперь у меня возникла ошибка: storeAttribute on xpath=(//div[starts-with(@class, 'commentItem')]/@id)[1] со значением Id Ошибка: 08:51 :22 Невозможно найти элемент с выражением xpath (//div[starts-with(@class, 'commentItem')]/ из-за следующей ошибки: SyntaxError: Document.evaluate: выражение не является допустимым выражением, которое странно, потому что когда я попробовал выражение xpath в консоли, оно дало мне идентификатор, который я хочу извлечь: $x("(//div[starts-with(@class, 'commentItem')]/@id)[1]" ) Массив [ id = "C78" ]

Al Wellens 08.04.2024 10:05

вы можете попробовать //div[starts-with(@class, 'commentItem')][1]/@id (не уверен, что @id будет работать с массивом, поэтому здесь следует использовать одну ссылку на веб-элемент... как вы видите, что консоль возвращает массив, а не значение, поэтому она должна игнорировать часть xpath?)

browsermator 09.04.2024 20:29

Я попробовал ваше решение, но получил ту же ошибку :(

Al Wellens 09.04.2024 21:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
192
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема, с которой вы столкнулись, связана с тем, что команда storeValue в Selenium IDE предназначена для извлечения значения атрибута из элемента HTML, а не из самого атрибута.

В вашем случае вы пытаетесь извлечь атрибут id из элемента div. Используемое вами выражение XPath на самом деле возвращает сам атрибут id, а не элемент HTML, поэтому вы видите сообщение об ошибке.

Чтобы это исправить, вам нужно использовать команду storeAttribute вместо storeValue. Команда storeAttribute предназначена для извлечения значения атрибута из элемента HTML.

Вот как вы можете изменить свою команду:

Команда: storeAttribute

Цель: xpath=(//div[starts-with(@class, 'commentItem')]/@id)[1]

Значение: идентификатор

Эта команда сохранит значение атрибута id первого элемента div с классом, который начинается с commentItem, в переменной Id.

Привет, я попробовал, но теперь у меня возникла ошибка: storeAttribute on xpath=(//div[starts-with(@class, 'commentItem')]/@id)[1] со значением Id Ошибка: 08:51 :22 Невозможно найти элемент с выражением xpath (//div[starts-with(@class, 'commentItem')]/ из-за следующей ошибки: SyntaxError: Document.evaluate: выражение не является допустимым выражением.

Al Wellens 08.04.2024 08:56

что странно, потому что когда я попробовал выражение xpath в консоли, оно дало мне идентификатор, который я хочу извлечь: $x("(//div[starts-with(@class, 'commentItem')]/@id)[1 ]") Массив [ id = "C78" ]

Al Wellens 08.04.2024 08:58

Разве это не отвечает на ваш вопрос?

Shadique 08.04.2024 10:17

не совсем так, как я пытаюсь получить это значение идентификатора, используя этот xpath (//div[starts-with(@class, 'commentItem')]/@id)[1] который отлично работает в консоли, но используя это же выражение xpath в Selenium IDE, я получил следующую ошибку: storeAttribute on xpath=(//div[starts-with(@class, 'commentItem')]/@id)[1] со значением Id Ошибка: 08:51 :22 Невозможно найти элемент с выражением xpath (//div[starts-with(@class, 'commentItem')]/ из-за следующей ошибки: SyntaxError: Document.evaluate: выражение не является допустимым выражением.

Al Wellens 08.04.2024 11:28

Другие вопросы по теме