عنصر XPath الذي يحتوي على سمة ووالد الوالد الذي يحتوي على سمة أخرى
سؤال
هذه هي أول مشاركة لي هنا ولأنني رأيت العديد من الإجابات الرائعة ، اعتقدت أنني سأجربها.
أحاول استخدام XPath للحصول على عنصر معين في مستند HTML. فيما يلي مثال يستند إلى صفحة ويب Google:
<html>
<head>
<title>XPath Test</title>
</head>
<body>
<form name='f'>
<table>
<tbody>
<tr>
<td>
<input name='q' type="text" />
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
باستخدام المثال أعلاه (الذي تم تبسيطه لأغراض طلب المساعدة) ، أود أن أكون قادرًا على العثور على عنصر الإدخال الذي اسمه = Q "ولديه سلف يبلغ من العمر 5 آباء باسم = 'f '.
على سبيل المثال ، إذا كنت سأفعل ذلك في بناء جملة SWAT ، وهي مكتبة اختبار أتمتة الويب مفتوحة المصدر موجودة في http://ulti-swat.wikispaces.com, ، سيكون بناء الجملة على النحو التالي:
| AssertElementExists | التعبير | name = q ؛ parentelement.parentElement.ParentElement.ParentElement.ParentElement.name = f | input |
لقد بدأت للتو في تعلم XPath وأحاول فهم كيفية الجمع بين المتنبئين مع المحاور. هل من الممكن القيام بهذه التعبيرات مع XPath؟ إذا كان الأمر كذلك ، فهل يمكن لأي شخص على دراية بالمساعدة؟
المحلول
يمكنك أن تفعل:
//input[@name='q' and ancestor-or-self::*[@name='f']]
// -- input element whose name='q' and who has an ancestor with the name='f'
أو
//input[@name='q' and ../../../../../../*[@name='f']]
// -- input element whose name='q' and who is 5 parents up with the name='f'
يمكنك استخدام سطح المكتب هذا XPath Visualizer لاختبار تعبيرات XPath الخاصة بك. أ يمكن العثور على البرنامج التعليمي الأساسي هنا.