无法使用phantomjs从谷歌翻译获得结果值

时间:2014-03-04 07:57:02

标签: javascript jquery html phantomjs google-translate

这是我的代码,用于获取程序中给出的字词的谷歌翻译。使用phantomjs实现此目的。

将“Word:asdasdasd”传递给id为“source”的文本区域并触发click事件。之后尝试检查是否包含在新创建的span标记下的结果值。对于我正在检查ID为“result_box”的父母是否有多个孩子。如果是一个案例,那么我们可以说,一旦将值传递给textarea,就会动态创建span标记。

var page = require('webpage').create();
console.log("Entering the program");
page.onConsoleMessage = function (msg) { 
    console.log(msg); 
};
page.open("http://translate.google.com", function(status) {
    if(status == 'success'){
        console.log("Page loaded "+ status);
        page.includeJs("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() {
            setTimeout(function() {
                var data = page.evaluate(function() {
                    $('#source').val("asdasdasd");
                    var ev = document.createEvent("MouseEvents");
                    ev.initEvent("click", true, true);
                    document.querySelector("input[id='gt-submit']").dispatchEvent(ev);
                    console.log("Click on page ");
                                if( $('#result_box').children.length > 0 ){
                                    console.log("New Span included");
                                    console.log("value: " + $('#result_box').val());
                                }
                                else{
                                    console.log("No span");
                                }
                                });
                                console.log("Exiting the program");
                phantom.exit()
            }, 10000);
        });
    }
});

enter image description here

输出:

输入程序

页面加载成功

点击页面

包括新的跨度

值:

退出程序


我的问题是它说新的span标签已创建但无法获得它的值。它很奇怪。上面的代码有什么问题?。

请有人指出解决方案。

提前致谢

更新enter image description here

1 个答案:

答案 0 :(得分:0)

为@Neha添加积分,

这对我有用。

setTimeout(function(){                           
 console.log("After 5 sec value: " + document.getElementById('result_box').innerHTML);    
},5000);