CasperJS填写adwords关键字计划程序

时间:2014-01-22 10:51:38

标签: javascript phantomjs casperjs

我无法在关键字规划器中填写adwords textarea。

  1. 我正在登录Google帐户:确定
  2. 我去关键字规划师:好的
  3. 点击显示菜单:确定
  4. fill textarea:no ???
  5. 点击按钮:确定
  6. 我该怎么办?

    部分代码:

      casper.thenEvaluate(function () {
        document.querySelector('#gwt-debug-keywords-text-area').textContent = "test";
    });
    

    整个代码:

    // requires
    var utils = require('utils');
    var casper = require('casper').create({
    verbose: true,
    logLevel: "debug",
    waitTimeout: 5000
    });
    
    var email = 'email';
    var passwd = 'passwd';
    
    //login
    casper.start('http://adwords.google.com');
    
    casper.thenEvaluate(function login(email, passwd) {
        document.querySelector('#Email').setAttribute('value', email);
        document.querySelector('#Passwd').setAttribute('value', passwd);
        document.querySelector('form').submit();
    }, {email:email, passwd:passwd});
    
    //go to keyword planner
    casper.thenOpen('https://adwords.google.com/ko/KeywordPlanner/Home?');
    
    casper.wait(1000, function() {});
    
    casper.thenEvaluate(function () {
        var element = document.querySelector( '#gwt-debug-splash-panel-search-selection-input' );
        var event = document.createEvent( 'MouseEvents' );
        event.initMouseEvent( 'click', true, true, window, 1, 0, 0 );
        element.dispatchEvent( event );
    });
    //HERE
    casper.thenEvaluate(function () {
        document.querySelector('#gwt-debug-keywords-text-area').textContent = "test";
    });
    
    casper.thenEvaluate(function () {   
        var element = document.querySelector( '#gwt-debug-search-button-content' );
        var event = document.createEvent( 'MouseEvents' );
        event.initMouseEvent( 'click', true, true, window, 1, 0, 0 );
        element.dispatchEvent( event ); 
    });
    
    casper.then(function() {
        this.capture('exit.png');
        });
    
    casper.run();
    

    请参阅捕获:http://www.hostingpics.net/viewer.php?id=939611exit.png

2 个答案:

答案 0 :(得分:2)

问题在于你假设Google正在使用他们的HTML并且“#gwt-debug-keywords-text-area”ID是唯一的......但事实并非如此。尝试使用浏览器的控制台:

document.querySelectorAll( '#GWT调试 - 关键词文本区域')

您会看到有多个具有相同ID的元素...您会发现其中一个元素是您正在寻找的元素。

答案 1 :(得分:0)

我从未使用jQuery和Casperjs将textarea发送到屏幕上取得成功,我很乐意看到这个有效,因为我会使用它。相反,我只使用Casper.sendKeys