Select 按钮与 jQuery for casperjs

Select button with jQuery for casperjs

我想 select 带有 casperjs 的按钮,但我的问题是该按钮已更改 IDsclasses。我只能"identify"这个按钮,根据一个span的文字做了2个关卡:

<button class="changes-always" id="changes-always-too">
   <div class="changes-always2">
      <span class="changes-always3">Same text</span>
   </div>
</button>

使用 jQuery 我可以 select button,首先 selecting span,因为它总是具有相同的内容。

var span = $('span:contains("Same text")');
var button = span.parent().parent() // there is probably a nice way to do this

我通过 casperjs 将 jQuery 加载为 clientScripts,我的问题是如何正确地让它与 evaluate(function() 一起工作以及使用select 或 casperjs 的变量(如果可能的话)

这就是我的进展,但后来我 运行 遇到了 objectstring 问题。

casper.then(function() {
  var items = this.evaluate(function () {
        return $('span:contains("Some text")');
  });
  console.log(items);
});

太好了,如果有人能指出正确的方向,如何将 jQuery 用作 selector 然后让 casperjs 使用它。提前多次感谢!

如果文本是唯一的,您也可以使用 clickLabel()。

casper.clickLabel("Some text");

这也适用于按钮。

另一个选项 jquery 应该是通过文本获取 ID,如果有时有相同的文本,则通过索引将它们抓出来:

...
var x = require('casper').selectXPath;
var buttonIDs;
// get button ID's with specific text by getElementsAttribute with xPath selector
buttonIDs = casper.getElementsAttribute(x("//button[contains(text(),'Some specific text')]"), 'id');
casper.then(function() {
  casper.echo(buttonIDs);
});
casper.then(function() {
  casper.click("button[id='" + buttonIDs[0] + "']");
});

...