ฉันมีหน้าเว็บที่ฉันต้องการใช้กับ YQL แต่ฉันต้องการ XPath ของรายการเฉพาะ ฉันสามารถดูได้ในพื้นที่เครื่องมือแก้ปัญหาสำหรับ Google Chrome แต่ฉันไม่เห็นวิธีคัดลอก XPath นั้น
มีวิธีการคัดลอก XPath แบบเต็มหรือไม่?
ฉันมีหน้าเว็บที่ฉันต้องการใช้กับ YQL แต่ฉันต้องการ XPath ของรายการเฉพาะ ฉันสามารถดูได้ในพื้นที่เครื่องมือแก้ปัญหาสำหรับ Google Chrome แต่ฉันไม่เห็นวิธีคัดลอก XPath นั้น
มีวิธีการคัดลอก XPath แบบเต็มหรือไม่?
คำตอบ:
คุณสามารถใช้$x
ในคอนโซลจาวาสคริปต์ของ Chrome ไม่จำเป็นต้องใช้ส่วนขยาย
อดีต: $x("//img")
นอกจากนี้ช่องค้นหาในตัวตรวจสอบเว็บจะยอมรับ xpath
Ctrl+Space
$x
หากคุณเพียงพิมพ์$x
คุณจะเห็นว่ามันสำเร็จได้อย่างไร OP ควรจะสามารถกำหนดวิธีการบรรลุสิ่งที่พวกเขาต้องการ ตัวอย่างเช่น; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
คลิกขวาที่โหนด => "คัดลอก XPath"
คำตอบข้างต้นทั้งหมดถูกต้องที่นี่เป็นอีกวิธีหนึ่งที่มีภาพหน้าจอ
จาก Chrome:
ส่วนขยาย XPath Helper ทำในสิ่งที่คุณต้องการ: https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl
ไม่จำเป็นต้องใช้ส่วนขยายใน Chrome ในตอนนี้ คลิกขวาที่องค์ประกอบใด ๆ ที่คุณต้องการ xpath และคลิกที่ "ตรวจสอบองค์ประกอบ" จากนั้นอีกครั้งภายในตัวตรวจสอบคลิกขวาที่องค์ประกอบแล้วคลิกที่ "คัดลอก Xpath"
Google Chrome มีเครื่องมือตรวจแก้จุดบกพร่องในตัวที่เรียกว่า " Chrome DevTools " ซึ่งมีคุณสมบัติที่ใช้งานง่ายที่สามารถประเมินหรือตรวจสอบตัวเลือก XPath / CSS ได้โดยไม่ต้องมีส่วนขยายใด ๆ ของบุคคลที่สาม
สามารถทำได้สองวิธี:
ใช้ฟังก์ชันการค้นหาภายในแผงองค์ประกอบเพื่อประเมินตัวเลือก XPath / CSS และไฮไลต์โหนดที่ตรงกันใน DOM เรียกใช้โทเค็น $ x ("some_xpath") หรือ $$ ("css-selectors") ในแผงควบคุมคอนโซลซึ่งทั้งคู่จะประเมินและตรวจสอบความถูกต้อง
จากแผงองค์ประกอบ
กด F12 เพื่อเปิด Chrome DevTools
แผงองค์ประกอบควรจะเปิดตามค่าเริ่มต้น
กด Ctrl + F เพื่อเปิดใช้งานการค้นหา DOM ในแผงควบคุม
พิมพ์ในตัวเลือก XPath หรือ CSS เพื่อประเมิน
หากมีองค์ประกอบที่ตรงกันองค์ประกอบเหล่านั้นจะถูกเน้นใน DOM อย่างไรก็ตามหากมีสตริงที่ตรงกันภายใน DOM พวกเขาจะถูกพิจารณาว่าเป็นผลลัพธ์ที่ถูกต้องเช่นกัน ตัวอย่างเช่นส่วนหัวตัวเลือก CSS ควรตรงกับทุกอย่าง (อินไลน์ CSS, สคริปต์ ฯลฯ ) ที่มีส่วนหัวของคำแทนการจับคู่องค์ประกอบเท่านั้น
จากแผงคอนโซล
กด F12 เพื่อเปิด Chrome DevTools
สลับไปที่แผงคอนโซล
พิมพ์ XPath ต้องการ$x(".//header")
ประเมินและตรวจสอบความถูกต้อง
พิมพ์ตัวเลือก CSS $$("header")
เพื่อประเมินและตรวจสอบความถูกต้อง
ตรวจสอบผลลัพธ์ที่ส่งคืนจากการดำเนินการของคอนโซล
หากองค์ประกอบถูกจับคู่พวกเขาจะถูกส่งกลับในรายการ มิฉะนั้นรายการว่าง [] จะปรากฏขึ้น
$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.
บอกสูตรง่ายๆให้คุณค้นหา xpath ขององค์ประกอบใด ๆ
1- เปิดเว็บไซต์ในเบราว์เซอร์
2- เลือกองค์ประกอบและคลิกขวาที่มัน
3- คลิกตรวจสอบตัวเลือกองค์ประกอบ
4- คลิกขวาที่ html ที่เลือก
5- เลือกตัวเลือกเพื่อคัดลอก xpath ใช้ในที่ที่คุณต้องการ
ลิงค์วิดีโอนี้จะเป็นประโยชน์สำหรับคุณ http://screencast.com/t/afXsaQXru
หมายเหตุ: สำหรับตัวเลือกขั้นสูงของ xpath คุณต้องรู้จัก regex หรือรูปแบบของ html ของคุณ
$x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
xpathOnClick มีสิ่งที่คุณกำลังมองหา: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo
อ่านความคิดเห็นว่าจริง ๆ แล้วมันใช้เวลาสามคลิกเพื่อรับ xpath
จากการอัปเดตล่าสุดสำหรับ Chrome คุณสามารถคลิกองค์ประกอบใด ๆ ในตัวตรวจสอบองค์ประกอบและคัดลอก XPath ไปยังคลิปบอร์ด
สำหรับ Chrome เช่น:
โดยเปิดแผง 'องค์ประกอบ' ของเบราว์เซอร์กด CTRL + F วาง XPath
ข ทำการเปลี่ยนแปลงตามที่อธิบายไว้ในตัวอย่างต่อไปนี้
xpath สัมบูรณ์ = // * [@ id = "แอป"] / div [1] / ส่วนหัว / nav / div [2] / ul / li [2] / div / ปุ่ม
xpath ที่เกี่ยวข้อง = // div // nav / div [2] / ul / li [2] / div / ปุ่ม
เมื่อคุณทำการเปลี่ยนแปลง:
เพียงคลิกขวาที่องค์ประกอบที่คุณต้องการ xpath และคุณจะเห็นรายการเมนูเพื่อคัดลอก สิ่งนี้อาจไม่มีอยู่เมื่อ OP สร้างโพสต์ของเขา แต่ตอนนี้มี
ใน Firebug ใน Firefox คุณสามารถคลิกขวาที่องค์ประกอบหลังจากตรวจสอบแล้วเลือกคัดลอก XPath ฉันไม่สามารถรับ Chromyql ให้ทำงานได้อย่างราบรื่น
คุณสามารถลองใช้ Chrome Web Extension TruePathซึ่งสร้าง XPath แบบสัมพัทธ์แบบไดนามิกเมื่อคลิกขวาบนหน้าเว็บและแสดง XPath ทั้งหมดเป็นรายการเมนู
OT เล็กน้อย แต่อาจมีประโยชน์: บน Mac Chrome แม้ว่าคุณจะไม่สามารถคัดลอก xpath ออกจากช่องค้นหาในแผงเครื่องมือ Dev (แทนคัดลอกคว้าโหนดเป็น HTML) คุณสามารถลากและวางข้อความลงในโปรแกรมแก้ไขภายนอก
ฉันลองส่วนขยายที่มีอยู่เกือบทั้งหมดและพบว่าด้านล่างเป็นส่วนที่ดีที่สุด
เช่นเดียวกับ FirePath ส่วนขยายนี้ให้ Xpath โดยตรงเมื่อคุณคลิกที่ตรวจสอบ
กดCntl + Shift + C
เลือกองค์ประกอบที่คุณต้องการรับXPath
โดยคลิก
right click
ที่ส่วนที่ไฮไลต์ในคอนโซล
copy
->copy XPath
ใช้ส่วนขยายนี้สร้าง xpaths โดยใช้ id หรือ class ซึ่งอาจเป็นสิ่งที่คุณต้องการใช้
คลิกที่ไอคอนเบราว์เซอร์พาเนลจะปรากฏที่มุมขวาของหน้าจากนั้นคลิกเริ่มตรวจสอบจากนั้นคลิกที่องค์ประกอบใดก็ได้เพื่อรับ xpath ของคุณ