Google Chrome'da XPath almanın bir yolu var mı?


346

YQL ile kullanmak istediğim bir web sayfam var. Ama belirli bir öğenin XPath'ına ihtiyacım var. Google Chrome için hata ayıklama araçları alanında görebiliyorum ancak bu XPath'i kopyalamanın bir yolunu göremiyorum.

Tam bir XPath kopyalamanın bir yolu var mı?


2
Chrome'a ​​ek olarak Firefox'u yüklemeye hazırsanız , xpather uzantısını kullanabilirsiniz.
Adrian Grigore

4
Firefox'u kurmaya istekliyse, zaten Firebug'da yerleşiktir.
Verhogen

2
@verhogen: Firebug'u neredeyse günlük olarak kullanmama rağmen bunun farkında değildim. Başka birinin daha fazla bilgi ile ilgilenmesi durumunda, işte burada: blog.browsermob.com/2009/04/…
Adrian Grigore

Ben de bunu yükseltiyorum .... Google Chrome'daki Xpath Yardımcısı iyi çalışmıyor, hem [Ctrl + Shift + X] kısayol tuşuna basarken hem de siyah "X Path" düğmesine (İngiliz anahtarı düğmesiyle) Sayfada JS hataları olduğunda JS konsolu. Ve Chrome için başka iyi eklentiler bulamadım. Mozilla için "XPath Denetleyicisi" eklentisini indirmeyin. Bu eklenti ile ilgili sorunlar da buldum. "XPather" 'i aldığınızdan ve Firefox açıkken (başka bir tarayıcı değil) indirdiğinizden emin olun. "XPather" sağ tıklama öğesini kullanmak ve "XPather'de göster" i seçmek için
MacGyver

Artık Chrome'un da "XPather" uzantısı var. Çok iyi olduğunu hissediyorum. Pencereyi etkinleştirmek için Alt-'x '. Xpath değerini girebilir ve eşleşen sonuçları görebilirsiniz. Eşleşen sonucun görüntülenmesi oldukça düzgün.
gm2008

Yanıtlar:


555

Sen kullanabilirsiniz $xChrome'un JavaScript konsolunda. Uzantı gerekmez.

örn: $x("//img")

Ayrıca web denetçisindeki arama kutusu xpath'i kabul eder


2
Güzel - bunun orijinal soruyu cevapladığından emin olmasam da. Bunu nasıl buldun? Konsolda benzer fonksiyonların olup olmadığını merak ediyorum.
huyz

4
Chrome, Firebug komut satırı komutlarının çoğunu kopyaladı: getfirebug.com/wiki/index.php/Command_Line_API
huyz

99
"Bir eleman için xpath dizesi nasıl alınır?" Yerine "xpath tarafından nasıl seçilir?" Sorusunu soruyordu. değil mi?
Max Williams

3
İlginç olan nasıl Ctrl+Spaceaçığa çıkmıyor $x. Sadece $xyazarsanız, nasıl elde edildiğini görebilirsiniz, bu nedenle OP istediklerine nasıl ulaşacağını belirleyebilmelidir. Örneğin; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair

5
@huyz - benzer işlevler var. Developers.google.com/chrome-developer-tools/docs/console adresine bakın . $ 0 özellikle kullanışlıdır: DOM aracında seçtiğiniz son öğe. $ ($ 0) bunu bir jQuery nesnesi yapar (jQuery varsa). Ayrıca, makale panoya kopyalanan kopyadan ($ 0) bahsetmez. (Bu arada, ben ben konsolda başka bir şey için bu değişkeni kullanmaya çalışıyor çünkü sadece $ x keşfetti ve bu konu buldum.)
Nathan Uzun

245

Düğüme sağ tıklayın => "XPath Kopyala"


19
Bu bir xpath elde etmenin en kırılgan yolu, içerik değiştikçe kırılması çok muhtemel
Juan Mendes

8
@JuanMendes alternatif nedir?
Nate

9
@Nate XPath'ınızın belge değiştikçe hala çalışmasını istiyorsanız kolay bir alternatif yoktur. Sadece düşünmeniz ve XPath'inize gereksiz bilgiler eklememeye çalışmanız gerekir. Temel kural, XPath'ınız ne kadar uzun olursa, diğer bağlamlarda çalışma olasılığının o kadar düşük olmasıdır.
Juan Mendes

Bu, sayfadaki benzersiz öğe için gerçek bir XPath sağlamaz. Bu oldukça zor olurdu.
CJ7

1
Google chrome'un yeni sürümünde, düğümü sağ tıklayıp Kopyala seçeneğine taşınan XPath öğesini kopyala'yı seçmelisiniz.
Omid Nasri

92

Yukarıdaki yanıtların hepsi burada doğru ekran görüntüsü ile başka bir yoludur.

Chrome'dan:

  1. Xpath'i bulmaya çalıştığınız öğeye sağ tıklayın "denetleyin"
  2. Konsolda vurgulanan alana sağ tıklayın.
  3. Kopya yoluna git

resim açıklamasını buraya girin



13

Artık kromda uzantıya gerek yok. Xpath için istediğiniz herhangi bir öğeye sağ tıklayın ve "Elemanı Denetle" ye tıklayın ve ardından tekrar Müfettiş'e tıklayın, öğeye sağ tıklayın ve "Xpath Kopyala" ya tıklayın.


11
Bu yöntem geçen yıl yayınlanan bir önceki yanıtta zaten belirtilmiştir: stackoverflow.com/a/11087358/938089
Rob W

12

Google Chrome, üçüncü taraf uzantıları olmadan XPath / CSS seçicilerini değerlendirebilen veya doğrulayabilen kullanışlı bir özellik içeren " Chrome DevTools " adlı yerleşik bir hata ayıklama aracı sunar .

Bu iki yaklaşımla yapılabilir:

XPath / CSS seçicileri değerlendirmek ve DOM'daki eşleşen düğümleri vurgulamak için Öğeler panelindeki arama işlevini kullanın. Konsol panelinde $ x ("some_xpath") veya $$ ("css-selectors") belirteçlerini yürütün; hem değerlendirir hem de doğrular.

Öğeler panelinden

  1. Chrome DevTools'u açmak için F12 tuşuna basın.

  2. Öğeler paneli varsayılan olarak açılmalıdır.

  3. Panelde DOM aramasını etkinleştirmek için Ctrl + F tuşlarına basın.

  4. Değerlendirmek için XPath veya CSS seçicilerini yazın.

  5. Eşleşen öğeler varsa, bunlar DOM'da vurgulanır. Ancak, DOM içinde eşleşen dizeler varsa, bunlar da geçerli sonuçlar olarak kabul edilecektir. Örneğin, CSS seçici üstbilgisi, yalnızca eşleme öğeleri yerine üstbilgi kelimesini içeren her şeyle (satır içi CSS, komut dosyaları vb.) Eşleşmelidir.

resim açıklamasını buraya girin

Konsol panelinden

  1. Chrome DevTools'u açmak için F12 tuşuna basın.

  2. Konsol paneline geçin.

  3. $x(".//header")Değerlendirmek ve doğrulamak için XPath yazın.

  4. $$("header")Değerlendirmek ve doğrulamak gibi CSS seçicilerini yazın.

  5. Konsol yürütüldüğünde döndürülen sonuçları kontrol edin.

Öğeler eşleşirse, bir listede döndürülürler. Aksi takdirde boş bir liste [] gösterilir.

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

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

XPath veya CSS seçici geçersizse, kırmızı metinle bir istisna gösterilir. Örneğin:

$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

Herhangi bir öğenin xpath'ini bulmak için basit bir formül söyleyelim:

1- Siteyi tarayıcıda aç

2- Elemanı seçin ve üzerine sağ tıklayın

3- Eleman incelemek seçeneğini tıklayın

4- Seçili HTML'ye sağ tıklayın

5- xpath kopyalama seçeneğini seçin İhtiyacınız olan her yerde kullanın

Bu video bağlantısı sizin için yararlı olacaktır. http://screencast.com/t/afXsaQXru

Not: xpath'ın ileri seçenekleri için, html'nizin regex veya desenini bilmelisiniz.


3
Bunu test etmek için Chrome konsolunu kullandım ve bunu oylamak için yaptı:$x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
Cagatay Ulubay

8

xpathOnClick aradığınız şeye sahiptir: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

Ancak yorumları okuyun, aslında xpath almak üç tıklama alır.


Umbuntu 10.04 üzerinde krom 12.0.742.124 ile çalışıyor gibi görünüyor, kuruluyor, ancak xpath simgesini tıkladığınızda, ardından sayfayı tıklayın (xpath açılır penceresini ilk kez kapatmak için), ardından bir sayfa öğesini tıklayın (js konsolunda xpath'i göstermek için) ) .... konsolda hiçbir şey görünmüyor. eklenti sitesinde test edilmiştir
xiatica

8

Chrome için en son güncellemeden sonra artık öğe denetçisindeki herhangi bir öğeyi tıklayabilir ve XPath'i panoya kopyalayabilirsiniz.


5

Örneğin Chrome için:

  1. XPath'ı bulmaya çalıştığınız öğede "denetle" yi sağ tıklayın.
  2. HTML DOM'de vurgulanan alana sağ tıklayın.
  3. Kopyala'ya gidin> 'XPath'i Kopyala'yı seçin.
  4. Yukarıdaki adımdan sonra, DOM'dan öğenin mutlak XPath değerini alırsınız.
  5. Göreli XPath yapmak için değişiklikler yapabilirsiniz (çünkü DOM değişirse, XPath'iniz yine de öğeyi bulabilir).

a. Bunu yapmak için, tarayıcının 'Öğeler' panelini açarak CTRL + F tuşlarına basın, XPath'i yapıştırın.

b. Aşağıdaki örnekte açıklandığı gibi değişiklikler yapın.

Mutlak xath = // * [@ id = "app"] / div [1] / başlık / nav / div [2] / ul / li [2] / div / düğmesi

İlgili xpath = // div // nav / div [2] / ul / li [2] / div / button

Değişiklik yaptığınızda:

  1. XPath'in DOM içinde benzersiz olduğundan emin olun.
  2. yine de web öğesi DOM'de ve web sayfasında seçilir.

3

Xpath için istediğiniz öğeye sağ tıklayın ve kopyalamak için bir menü öğesi göreceksiniz. OP görevini yaptığında bu olmayabilir ama kesinlikle orada.


2

Firefox'taki Firebug'da, bir öğeyi inceledikten sonra sağ tıklayıp XPath Kopyala'yı seçebilirsiniz. ChromYQLip'in sorunsuz çalışmasını sağlayamadım.


1

Web sayfasına sağ tıklandığında göreceli XPath'i dinamik olarak oluşturan Chrome Web Uzantısı TruePath'i kullanmayı deneyebilir ve tüm XPath'i menü öğeleri olarak görüntüleyebilirsiniz.


0

Biraz OT, ancak belki de yararlı: Mac Chrome'da, xpath'i Dev araçlar panelindeki arama kutusundan kopyalayamasanız da (bunun yerine kopya düğümü HTML olarak yakalar), metni harici bir düzenleyiciye sürükleyip bırakabilirsiniz.



0

Basın Cntl + Shift + C
biliyorsun bu doğru olsun diliyorum elemanı seçmek XPathüzerine tıklayarak
right clickkonsolda vurgulanan parçası
copy->copy XPath

resim açıklamasını buraya girin


-1

Bu uzantıyı kullanın, id veya sınıfa dayalı xpath'ler oluşturur, bu da muhtemelen kullanmak istediğiniz şeydir.

Tarayıcı simgesini tıklayın, panel sayfanın sağ köşesinde gösterilir, ardından incelemeyi başlat'ı tıklayın, ardından xpath'inizi almak için herhangi bir öğeyi tıklayın.

XPath Üreteci


@robbyoconnor bazı blackbox testi veya tarama yaptıysanız, oluşturulan tarayıcı xpath'in bu kadar kararlı olmadığını bilirsiniz.
Ospider
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.