【问题标题】:Click on some element based on its text content in CasperJS根据 CasperJS 中的文本内容单击某个元素
【发布时间】:2016-07-17 07:07:21
【问题描述】:

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

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

onclick=onClkRdMsg不断变化,有什么方法可以直接点击下一页按钮吗?

因为onclick 选择器一直在变化,如果没有工作,href=# 很抱歉这里没有包含代码。

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

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

???? 是什么

【问题讨论】:

  • 给出的答案有帮助吗?

标签: javascript phantomjs casperjs


【解决方案1】:

您必须检查页面上的每个链接是否有文本“下一页”:

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

【讨论】:

  • 检查并使用 CasperJS v 1.1.0-b5 和 PhantomJS 2.1.1
  • 如果搜索词周围有空格,最好使用tags[i].textContent.indexOf(searchText) != -1
【解决方案2】:

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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 2011-01-21
    • 2017-05-30
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多