根据CasperJS中的文本内容单击某个元素

时间:2016-03-29 15:53:12

标签: javascript phantomjs casperjs

我从网页上检索到以下内容:

<a href="#" onclick="onClkRdMsg(this, 'IPM.Note', 1, b4);">next page</a>

onclick=onClkRdMsg不断变化,是否有任何方法可以直接点击下一页按钮?

因为onclick选择器不断变化,并且href =#如果不能正常工作,抱歉没有包含此处的代码。

只是想知道如何点击下一页......

casper.then(function (){
    this.click("[????='next page']");
});

什么是????

2 个答案:

答案 0 :(得分:3)

casper.click("[????='next page']");使用CSS选择器调用单击。 CSS选择器无法根据内容(文本)匹配元素。

但XPath表达式很容易:

var x = require('casper').selectXPath;
...
casper.click(x('//*[contains(text(),"next page")]'));

如果您确定搜索文本周围没有空格,那么您也可以使用casper.clickLabel()

casper.clickLabel('next page');

答案 1 :(得分:0)

您必须检查页面上的每个链接是否有文字&#34;下一页&#34;:

casper.evaluate(function(){
    var tags = document.getElementsByTagName("a");
    var searchText = "next page";
    var found;

    for (var i = 0; i < tags.length; i++) {
      if (tags[i].textContent == searchText) {
        found = tags[i];
        found.click();
        break;
      }
    }
})

基于How to get element by innerText