通过casperjs点击<img role="button" ...=""/>

时间:2017-04-26 07:17:49

标签: javascript phantomjs casperjs

尝试通过casperjs点击下面的元素,但它对我不起作用。

<img alt="Pay Button" class="v-button" role="button" src="https://test/wallet-services-web/xo/button.png" tabindex="0" style="cursor: pointer; transition-property: filter; transition-duration: 0.25s; filter: brightness(1);">

我通过一堆嵌套的iframe搜索这个元素,我可以正确找到它 - 但我似乎无法正确点击它。

    if (casper.exists('img.v-button')) {
        console.log("Found button"); // the exists works - this is logged

        casper.click('img.v-button'); // Approach 1: nothing happens

        // Approach 2: nothing happens
//      var x = require('casper').selectXPath;
//      casper.click(x('(//img[@class="v-button"])'));

        return true;
    } else {
        var result = traverseTreeDown();
        if (result) {
            return true;
        } else {
            casper.page.switchToParentFrame();
        }
    }                

方法1和方法2都不起作用 - 即使我确实正确地进入“存在”块。

2 个答案:

答案 0 :(得分:0)

您应该尝试casperjs documentation上建议的方法:

casper.then(function() {
    casper.click('img.v-button');
});

casper.then(function() {
    // do next action
});

答案 1 :(得分:0)

我建议您查看API documentation

例如,请检查一下:您可以等待特定的选择器出现。

casper.start('https://yourmom.gov');

casper.waitForSelector('img.v-button', function() {
    this.click('img.v-button');
});

casper.run(); 

或者有另一种方式 - 我认为更好

casper.start('http://yourmom.gov/').thenClick('img.v-button', function() {
    this.echo("clicktastic.");
});

casper.run();