通过唯一子项查找父元素,但单击另一个子项
Find parent element by unique child, but click on another child
正在尝试找到正确的 xpath 选择器。元素只有 href
个唯一。是否可以通过 href="#">iphone X
文本和父 class class="card h-100"
找到元素。但是单击 <button class="btn btn-info">
,它是父项 class 的另一个子项。
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone X</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
使用 querySelectorAll()
尝试下面的代码
(function() {
var a = document.querySelectorAll('a[href="#"]');
var result = [];
a.forEach(function(el) {
if (el.innerHTML == 'iphone X' && el.parentElement.parentElement.parentElement.className.includes('card h-100')) {
result.push(el);
}
});
console.log(result);
})();
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone X</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone XS</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
<div class="card h-200">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone X</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
这是您要查找的 XPath 及其解释
//div[@class='card h-100'][.//a[.='iphone X']]//button
^ find a DIV
^ with this class
^ that has a child A
^ with text = 'iphone X'
^ once you find that DIV, find the child BUTTON
如果我没理解错的话,您想要单击下一个子 class 中对应于 'a' 且具有文本 'iphone X' 的按钮。为此,您可以使用以下 xpath:
//a[text()='iphone X']//ancestor::div//button[@class='btn btn-info']
希望对您有所帮助:)
要查找与文本 iphone X 关联的元素 <button class="btn btn-info">
,其父节点为 class="card h-100"
,您可以使用以下命令:
xpath
:
//div[@class='card h-100']//a[text()='iphone X']//following::button[@class='btn btn-info']
正在尝试找到正确的 xpath 选择器。元素只有 href
个唯一。是否可以通过 href="#">iphone X
文本和父 class class="card h-100"
找到元素。但是单击 <button class="btn btn-info">
,它是父项 class 的另一个子项。
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone X</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
使用 querySelectorAll()
(function() {
var a = document.querySelectorAll('a[href="#"]');
var result = [];
a.forEach(function(el) {
if (el.innerHTML == 'iphone X' && el.parentElement.parentElement.parentElement.className.includes('card h-100')) {
result.push(el);
}
});
console.log(result);
})();
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone X</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
<div class="card h-100">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone XS</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
<div class="card h-200">
<div class="card-body">
<h4 class="card-title">
<a href="#">iphone X</a>
</h4>
</div>
<div class="card-footer">
<button class="btn btn-info"></button>
</div>
</div>
这是您要查找的 XPath 及其解释
//div[@class='card h-100'][.//a[.='iphone X']]//button
^ find a DIV
^ with this class
^ that has a child A
^ with text = 'iphone X'
^ once you find that DIV, find the child BUTTON
如果我没理解错的话,您想要单击下一个子 class 中对应于 'a' 且具有文本 'iphone X' 的按钮。为此,您可以使用以下 xpath:
//a[text()='iphone X']//ancestor::div//button[@class='btn btn-info']
希望对您有所帮助:)
要查找与文本 iphone X 关联的元素 <button class="btn btn-info">
,其父节点为 class="card h-100"
,您可以使用以下命令
xpath
://div[@class='card h-100']//a[text()='iphone X']//following::button[@class='btn btn-info']