【发布时间】:2014-03-04 07:57:02
【问题描述】:
这是我在程序中获取单词的谷歌翻译的代码。我使用 phantomjs 来实现这一点。
我将 "Word:asdasdasd" 传递到 ID 为 "source" 的文本区域并触发点击事件。之后尝试检查结果值是否包含在新创建的 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);
});
}
});
输出:
进入程序
页面加载成功
点击页面
包括新跨度
值:
退出程序
我的问题是它说创建了新的 span 标签,但我无法获取它的值。这很奇怪。上面的代码有什么问题?
请任何人指出解决方案。
提前致谢
更新:
【问题讨论】:
-
value主要用于inputs或form elements。在这里您可以使用.text()仅获取其中的文本而无需任何html 标记 -
我试过
.text()。它没有用。仍然返回空 -
控制台有错误吗?
-
控制台中没有错误。但是当我尝试从我的程序运行时它返回空。检查我更新的屏幕截图
-
你试过 .html() 吗?那也显示为空?
标签: javascript jquery html phantomjs google-translate