Casperjs是测试各种网站上某些功能的好方法。
我正在使用的示例网站是教程的一部分。
以下网站提供了一个我无法使用console.log的嵌入代码 fetchText,使用casperjs。嵌入代码可以插入您的个人博客中,以链接到特定内容;在这种情况下,音乐专辑:
https://linkmaker.itunes.apple.com/en-us/details/1053933969
要刮的元素如下:
<a href="https://geo.itunes.apple.com/us/album/a-head-full-of-dreams/id1053933969?mt=1&app=music" target="_blank">https://geo.itunes.apple.com/us/album/a-head-full-of-dreams/id1053933969?mt=1&app=music</a>
标记的较大部分的两个快照
请参阅我在下面使用的代码:
var theTextIWant=casper.fetchText(x('//*[@id="695806055"]/div[4]/div[2]'));
console.log(theTextIWant);
不会返回任何错误,并且脚本可以与页面上的其他链接或文本完美配合。例如以下内容:
var theTextIWant=casper.fetchText(x('//*[@id="1053933969"]/div[4]/div[2]/a'));
console.log(theTextIWant);
在查看相关的casperjs文档后,我无法找到 替代了嵌入代码上的fetchText。我错过了什么 casperjs文档,这将允许我console.log嵌入代码?
像往常一样,非常感谢您的帮助!
如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
您似乎想要检索textarea的值。 casper.fetchText()
仅连接所选上下文元素的所有后代元素的TextNodes,但<textarea>
没有子<input>
与value
没有相同的方式。您必须访问仅在page context中访问的textarea的casper.then(function(){
this.echo(this.evaluate(function(){
return document.getElementById("link-code").value;
}));
});
属性:
- onblur , you are making a call to "show users(this.value)"
- there is a space between "show" and "user" , even u correct the space , you dont have a function "showuser" anywhere.
- your function to make the ajax call is "showHint"
- next you need a space between "new" and "XMLHTTpRequest()"
<form action="">
First name: <input type="text" id="txt1" onblur="showHint(this.value)"/>
</form>
<p>Username: <span id="txtHint"></span></p>
</form>
<script>
function showHint(str) {
var xhttp;
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "user.php?u="+str, true);
xhttp.send();
}
</script>