我正在尝试使用 casperjs 检查 DOM 中是否存在以下元素:
<b>Bar</b>
有没有使用选择器和的简单方法来做到这一点casper.exists
?casperjs 文档使其非常不清楚。
我正在尝试使用 casperjs 检查 DOM 中是否存在以下元素:
<b>Bar</b>
有没有使用选择器和的简单方法来做到这一点casper.exists
?casperjs 文档使其非常不清楚。
的基本用途casper.exists()
是向它传递一个选择器字符串,它将返回 true 或 false 以指示是否找到任何与该选择器匹配的元素。
但是,在您的情况下,可以找到此元素的唯一实用选择器是b
,因此,如果您专门寻找b
包含此文本的元素,则需要指定某种形式的上下文(例如父元素),或者改为使用 XPath 测试此元素的存在,这使您可以通过其文本内容测试元素:
var x = require('casper').selectXPath;
if (casper.exists(x('//b[text()="Bar"]'))) {
// <b>Bar</b> exists
}
如果您需要检查其他元素。 访问 并学习如何通过 XPath 找出元素并根据 BoltClock 的答案进行操作。
例如:检查 li 与 class="a-last"
if (casper.exists(x('//li[@class="a-last"]'))) {
console.log("find the element");
}
如果您尝试选择一个模糊或非特定的选择器(无类或 ID),使用 CSS Path 对我有用,例如:
this.echo(this.getElementAttribute('html body div.main-container div.central-container div.articles-home h4));
在这种情况下,将打印文章的标题。在exists() 中使用它时,它的工作方式相同。