javascript - CasperJS 选择具有指定文本的复选框

标签 javascript checkbox casperjs

我想用casperJS自动选中复选框

<tr>
    <td style=" text-align:center;">
        <input type="checkbox" data-rowindex="1" data-crdid="0005442" data-numcrd="3" value="">
    </td>
    <td>Data Structures and Algorithms</td>
    <td>INT2203></td>
</tr>
<tr>
    <td style=" text-align:center;">
        <input type="checkbox" data-rowindex="2" data-crdid="0005682" data-numcrd="3" value="">
    </td>
    <td>Machine Learning</td>
    <td>INT2204></td>
</tr>
<tr>
    <td style=" text-align:center;">
        <input type="checkbox" data-rowindex="3" data-crdid="003643" data-numcrd="3" value="">
    </td>
    <td>Artificial Intelligence</td>
    <td>INT2205></td>
</tr>

第一列是要选择的复选框。 第二个是主题名称,最后一个是主题ID。

现在只知道题目的ID:INT2204,想用casperjs选中这个题目的框。但是,唯一要区分的是 data-crdid 我不知道。

是否有通过 casperjs 选择 ID 为“INT2204”的主题的复选框?

最佳答案

您可以使用 jQuery 过滤元素并获取兄弟元素。如果您注入(inject) jQuery(如果尚未注入(inject)),CasperJS 可以在页面内部对此进行评估。

注入(inject) jQuery:

casper = require('casper').create();
casper.start();
casper.open('some url');
casper.then(function doSomething() {
    this.page.injectJs('relative/local/path/to/jquery.js');
     this.evaluate(function (courseId) {
        $('td').filter(function() {
            return $(this).text() === courseId;
        }).siblings().find('input').prop('checked', true);
    }, 'INT2203>');
});

浏览器中的示例:

var courseId = 'INT2203>';
$('td').filter(function() {
  return $(this).text() === courseId;
}).siblings().find('input').prop('checked', true);
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <title>Checkbox test</title>
</head>

<body>
<table>
  <tr>
    <td style=" text-align:center;">
      <input type="checkbox" data-rowindex="1" data-crdid="0005442" data-numcrd="3" value="">
    </td>
    <td>Data Structures and Algorithms</td>
    <td>INT2203></td>
  </tr>
  <tr>
    <td style=" text-align:center;">
      <input type="checkbox" data-rowindex="2" data-crdid="0005682" data-numcrd="3" value="">
    </td>
    <td>Machine Learning</td>
    <td>INT2204></td>
  </tr>
  <tr>
    <td style=" text-align:center;">
      <input type="checkbox" data-rowindex="3" data-crdid="003643" data-numcrd="3" value="">
    </td>
    <td>Artificial Intelligence</td>
    <td>INT2205></td>
  </tr>
</table>

</body>

</html>

关于javascript - CasperJS 选择具有指定文本的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34040480/

相关文章:

javascript - PhoneGap : Device Plugin Not Working

java - Htmlunit 通过单击按钮跳过页面

python - "Element click intercepted"尝试单击复选框时出错

javascript - 在 CasperJS 中与第三方异步 API 同步

javascript - 如何在Javascript中获取当前屏幕 View 中左上角的偏移量?

javascript - 消失元素的 OnClick 事件

javascript - anchor 击行为中的复选框

java - 从复选框值(数组)构建 URL Android

javascript - 获取可靠的网站屏幕截图? Phantomjs 和 Casperjs 在某些网站上都返回空屏幕截图

javascript - CasperJS 测试文件中的测试套件循环导致 shell 中随机失败