【问题标题】:How to determine if a specific input exists using CasperJS如何使用 CasperJS 确定特定输入是否存在
【发布时间】:2015-08-27 17:01:42
【问题描述】:

我的 HTML

<input name="SUBMIT-chn:$INTERNAL_password.pss" title="Select" 
    class="image  selectIcon" type="image" alt="Select" src="docs/pics/select.png">

我正在尝试使用 CasperJS 来了解它是否存在,如果存在则“单击”它?

var casper = require('casper').create();
var site = 'http://internalsite/username=abc';

var exists;
casper.start(site, function() {
    exists = this.evaluate(function() {
        return __utils__.exists('image selectIcon');
    });
});

casper.run(function() {
    this.echo(exists).exit();
});

【问题讨论】:

    标签: javascript css-selectors casperjs


    【解决方案1】:

    clientutils.exists() 需要一个 CSS 选择器作为参数。您似乎想根据其两个类属性确定输入元素是否存在。

    'image selectIcon' 不是基于类属性选择元素的方式。在这种情况下,一个合适的 CSS 选择器就是这个:

    '.image.selectIcon'
    

    可以基于单个类(多个类由空格分隔)选择一个元素,方法是在其前面加上一个点。基于同一元素的多个类的选择必须不带空格,因为选择器中的空格表示先前选择的元素的后代(例如子元素)。

    您可以使用waitForSelector() 等待一个元素出现,以防网站是动态生成的,然后点击它:

    casper
        .start(url)
        .waitForSelector('.image.selectIcon')
        .thenClick('.image.selectIcon')
        .then(function(){
            // see what happened after the click
            this.capture("screenshot.png");
        })
        .run();
    

    【讨论】:

    • 在使用 CasperJS 编写脚本之前,您应该学习 CSS 选择器的基础知识。
    • 选择图标中有一个空格
    • 是的,类之间可以有多个空格。这就是 CSS 选择器的工作原理。
    • 我看到截图不是整个窗口。它非常小,大部分页面都被切断了。无论如何要指定我正在捕获的窗口的大小?
    • 但还有一个更大的问题。我正在单击我的文档,但屏幕截图显示了一些不可能的内容,除非 1. 屏幕截图不是 Web 解析的当前阶段,或者 (2) 我的 casperjs 代码没有按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多