Чи є спосіб отримати XPath в Google Chrome?


346

У мене є веб-сторінка, яку я хочу використовувати з YQL. Але мені потрібен XPath певного елемента. Я бачу це в області інструментів налагодження для Google Chrome, але я не бачу способу скопіювати цей XPath.

Чи є спосіб скопіювати повний XPath?


2
Якщо ви готові встановити Firefox на додаток до Chrome, ви можете використовувати розширення xpather .
Адріан Григоре

4
Якщо він готовий встановити Firefox, він уже вбудований у Firebug.
Верхоген

2
@verhogen: Я про це не знав, хоча я користуюся Firebug майже щодня. Якщо когось цікавить більше інформації, ось це: blog.browsermob.com/2009/04/…
Адріан Григоре

Я також заявляю про це .... Помічник Xpath в Google Chrome не працює добре, як при натисканні клавіші швидкого доступу [Ctrl + Shift + X] або натисканні чорної кнопки "X Шлях" (за допомогою гайкового ключа) у вікні Консоль JS, коли на сторінці є помилки JS. І я не зміг знайти жодних інших хороших додатків для Chrome. Не завантажуйте надбудову "XPath Checker" для Mozilla. Я також знайшов проблеми з цим додатком. Не забудьте отримати "XPather" і завантажити його, коли у вас відкритий Firefox (не якийсь інший браузер). Для використання елемента "XPather" клацніть правою кнопкою миші та оберіть "Показати в XPather"
MacGyver

Тепер Chrome має також розширення "XPather". Я відчуваю це дуже добре. Alt -x для активації вікна. Ви можете ввести xpath і побачити відповідні результати. Відображення відповідного результату досить акуратне.
gm2008

Відповіді:


555

Ви можете використовувати $xв консолі JavaScript JavaScript. Розширення не потрібні.

колишній: $x("//img")

Також вікно пошуку веб-інспектора прийме xpath


2
Приємно - хоча я не впевнений, що це відповідає на початкове запитання. Як ви дізналися про це? Мені цікаво, чи є в консолі інші подібні функції.
хуйз

4
Я думаю, Chrome скопіював більшість команд командного рядка Firebug: getfirebug.com/wiki/index.php/Command_Line_API
huyz

99
Він запитував "як отримати рядок xpath для елемента?", А не "як я вибираю xpath?" чи не він?
Макс Вільямс

3
Цікаво, як Ctrl+Spaceне розкривається $x. Якщо ви просто введете, $xви можете бачити, як це досягнуто, тому ОП повинен мати можливість визначати, як досягти того, чого вони хочуть. Наприклад; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair

5
@huyz - доступні подібні функції. Перегляньте сторінку developers.google.com/chrome-developer-tools/docs/console . $ 0 особливо корисний: останній елемент, який ви вибрали в інструменті DOM. $ ($ 0) робить його об'єктом jQuery (якщо jQuery доступний). Також у статті не згадується копія ($ 0), яка копіюється у буфер обміну. (До речі, я щойно знайшов $ x і знайшов цю тему, тому що я намагався використовувати цю змінну для чогось іншого в консолі.)
Nathan Long

245

Клацніть правою кнопкою миші на вузлі => "Скопіювати XPath"


19
Це самий крихкий спосіб пройти xpath, він дуже ймовірно порушиться, коли зміст змінеться
Хуан Мендес

8
@JuanMendes яка альтернатива?
Нейт

9
@Nate Не існує простої альтернативи, якщо ви хочете, щоб ваш XPath як і раніше працював у міру зміни документа. Вам просто потрібно подумати над цим і постаратися не додавати зайву інформацію у свій XPath. Основне правило полягає в тому, що чим довше ваш XPath, тим менше ймовірність працювати в інших контекстах.
Хуан Мендес

Це не дає фактичної XPath для унікального елемента на сторінці. Це було б досить складно.
CJ7

1
У новій версії Google chrome потрібно клацнути правою кнопкою миші на вузлі та вибрати пункт Copy XPath, який перейшов до параметра Copy.
Омід Насрі

92

Усі наведені вище відповіді правильні, тут є ще один спосіб із скріншотом.

З Chrome:

  1. Клацніть правою кнопкою миші «перевірити» на предметі, який ви намагаєтесь знайти xpath
  2. Клацніть правою кнопкою миші на виділеній області на консолі.
  3. Перейдіть на Копіювати xpath

введіть тут опис зображення


24

Розширення XPath Helper виконує те, що потрібно: https://chrome.google.com/webstore/detail/hgimnogjllphhhllbbmlgjoejdpjl


Хтось знає команди клавіатури для цього на ubuntu? crtl-shift-x та команда-shift-x, здається, нічого не роблять
xiatica

1
@xiatica, ти спробував на новій / оновленій вкладці? Зауважте, що розширення не працюватиме на вкладках, які були відкриті до встановлення; такі вкладки повинні бути оновлені.
асадовський

13

Зараз у хромі не потрібно розширення. Клацніть правою кнопкою миші на будь-якому елементі, для якого ви хочете xpath, і натисніть кнопку "Перевірити елемент", а потім знову всередині інспектора, клацніть правою кнопкою миші на елементі та натисніть на "Скопіювати Xpath".


11
Цей метод уже згадується в попередній відповіді, опублікованій минулого року: stackoverflow.com/a/11087358/938089
Rob W

12

Google Chrome пропонує вбудований інструмент налагодження під назвою " Chrome DevTools " поза коробкою, який включає зручну функцію, яка може оцінювати або перевіряти селектори XPath / CSS без будь-яких розширень сторонніх розробників.

Це можна зробити за допомогою двох підходів:

Використовуйте функцію пошуку на панелі «Елементи» для оцінки селекторів XPath / CSS та виділення відповідних вузлів у DOM. Виконайте маркери $ x ("some_xpath") або $$ ("css-селектори") на панелі консолей, які будуть оцінювати та підтверджувати.

На панелі «Елементи»

  1. Натисніть F12, щоб відкрити Chrome DevTools.

  2. Панель елементів повинна бути відкрита за замовчуванням.

  3. Натисніть Ctrl + F, щоб дозволити пошук DOM на панелі.

  4. Введіть в XPath або CSS селектори для оцінки.

  5. Якщо є відповідні елементи, вони будуть виділені в DOM. Однак якщо всередині DOM є відповідні рядки, вони також будуть вважатись достовірними результатами. Наприклад, заголовок селектора CSS повинен відповідати всьому (вбудований CSS, скрипти тощо), що містить заголовки слова, а не відповідати лише елементам.

введіть тут опис зображення

З панелі консолей

  1. Натисніть F12, щоб відкрити Chrome DevTools.

  2. Перехід на панель консолі.

  3. Введіть в XPath, як $x(".//header")оцінити та підтвердити.

  4. Введіть CSS-селектори, які хотіли $$("header")б оцінити та підтвердити.

  5. Перевірте результати, повернуті після виконання консолі.

Якщо елементи збігаються, вони будуть повернуті в список. В іншому випадку відображається порожній список [].

$x(".//article")
[<article class="unit-article layout-post">…</article>]

$x(".//not-a-tag")
[ ]

Якщо селектор XPath або CSS недійсний, виняток буде показаний червоним текстом. Наприклад:

$x(".//header/")
SyntaxError: Failed to execute 'evaluate' on 'Document': The string './/header/' is not a valid XPath expression.

$$("header[id=]")
SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'header[id=]' is not a valid selector.

10

Скажемо вам просту формулу, щоб знайти xpath будь-якого елемента:

1- Відкрийте сайт у браузері

2- Виберіть елемент і клацніть правою кнопкою миші на ньому

3- Клацніть опцію перевірити елемент

4- Клацніть правою кнопкою миші на вибраному HTML

5- оберіть варіант для копіювання xpath Використовуйте його там, де вам це потрібно

Це посилання на відео буде корисним для вас. http://screencast.com/t/afXsaQXru

Примітка. Для попередніх варіантів xpath ви повинні знати регулярний вираз або шаблон вашого HTML.


3
Використовував консоль Chrome, щоб перевірити це, і зробив це, щоб підтвердити: $x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
Cagatay Ulubay

8

xpathOnClick має те, що ви шукаєте: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

Прочитайте коментарі, хоча для отримання xpath насправді потрібно три кліки.


Схоже, він не працює на ubuntu 10.04 з chrome 12.0.742.124, встановлює, але натискаючи на значок xpath, потім клацніть на сторінці (вперше відхилити спливаюче вікно xpath), потім натисніть на елемент сторінки (щоб показати xpath у консолі js ) .... нічого не з’являється в консолі. протестовано на сайті плагіна
xiatica

8

З останнього оновлення для хрому тепер ви можете натиснути будь-який елемент інспектора елементів та скопіювати XPath у буфер обміну.


5

Наприклад, для Chrome:

  1. Клацніть правою кнопкою миші «перевірити» на предметі, який ви намагаєтеся знайти XPath.
  2. Клацніть правою кнопкою миші на виділеній області в HTML DOM.
  3. Перейдіть до Копіювати> виберіть "Копіювати XPath".
  4. Після вищевказаного кроку ви отримаєте абсолютний XPath елемента від DOM.
  5. Ви можете внести зміни, щоб зробити його відносним XPath (адже якщо DOM зміниться, ваш XPath все-таки зможе знайти елемент).

а. Для цього, відкривши панель "Елементи" браузера, натисніть CTRL + F, вставте XPath.

б. Внесіть зміни, як описано в наступному прикладі.

Абсолютний xpath = // * [@ id = "app"] / div [1] / header / nav / div [2] / ul / li [2] / div / button

Пов'язані xpath = // div // nav / div [2] / ul / li [2] / div / button

Коли ви вносите зміни:

  1. переконайтесь, що XPath унікальний у DOM.
  2. все-таки веб-елемент обраний у DOM та на веб-сторінці.

3

Просто клацніть правою кнопкою миші елемент, для якого потрібно xpath, і ви побачите пункт меню для його копіювання. Це, можливо, не існувало, коли ОП виступила на посаду, але це, безумовно, є зараз.


2

У Firebug в Firefox ви можете правою кнопкою миші клацнути на елементі після огляду і вибрати Copy XPath. Я не міг змусити ChromYQLip працювати безперебійно.


1

Ви можете спробувати використовувати веб-розширення TruePath Chrome, яке динамічно генерує відносну XPath правою кнопкою миші на веб-сторінці та відображає всі XPath як пункти меню.


0

Трохи OT, але, можливо, корисно. На Mac Chrome, хоча ви не можете скопіювати xpath із поля пошуку на панелі інструментів Dev (замість цього, копія захоплює вузол як HTML), ви можете перетягнути текст у зовнішній редактор.



0

натисніть Cntl + Shift + C
виберіть елемент, який ви бажаєте отримати XPath, клацнувши по ньому
right clickна виділеній частині консолі
copy->copy XPath

введіть тут опис зображення


-1

Використовуючи це розширення, воно генерує xpaths на основі id або класу, що, мабуть, ви хочете використовувати.

Клацніть на піктограмі браузера, панель відображається в правому куті сторінки, потім натисніть кнопку «Почати перевірку», а потім натисніть будь-який елемент, щоб отримати ваш xpath.

XPath Generator


@robbyoconnor, якщо ви провели тестування або сканування на чорному боці, ви знаєте, що xpath, створений браузером, не є таким стабільним.
ospider
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.