4

我正在尝试使用 casperjs 检查 DOM 中是否存在以下元素:

<b>Bar</b>

有没有使用选择器和的简单方法来做到这一点casper.exists?casperjs 文档使其非常不清楚。

4

3 回答 3

7

的基本用途casper.exists()是向它传递一个选择器字符串,它将返回 true 或 false 以指示是否找到任何与该选择器匹配的元素。

但是,在您的情况下,可以找到此元素的唯一实用选择器是b,因此,如果您专门寻找b包含此文本的元素,则需要指定某种形式的上下文(例如父元素),或者改为使用 XPath 测试此元素的存在,这使您可以通过其文本内容测试元素:

var x = require('casper').selectXPath;

if (casper.exists(x('//b[text()="Bar"]'))) {
    // <b>Bar</b> exists
}
于 2013-10-27T04:02:02.313 回答
0

如果您需要检查其他元素。 访问 并学习如何通过 XPath 找出元素并根据 BoltClock 的答案进行操作。

例如:检查 li 与 class="a-last"

 if (casper.exists(x('//li[@class="a-last"]'))) {
    console.log("find the element");    
 }
于 2017-11-22T09:27:36.570 回答
0

如果您尝试选择一个模糊或非特定的选择器(无类或 ID),使用 CSS Path 对我有用,例如:

this.echo(this.getElementAttribute('html body div.main-container div.central-container div.articles-home h4));

在这种情况下,将打印文章的标题。在exists() 中使用它时,它的工作方式相同。

于 2018-03-13T15:02:29.753 回答