我有去我的唯一的事情是,前面的<td>
將始終具有相同的(和獨特的文檔)內容:刮動態文本元素中沒有ID,等級,屬性等
<td>
<label>unique text<label>
</td>
<td>dynamic text</td>
我可以很容易地用jQuery抓住它在瀏覽器控制檯(在頁面加載的jQuery):
$("label:contains('unique text')").parent().next().text();
我一直在這一段時間,並已嘗試一切我能想到的。
我最近的嘗試是使用casperjs'評估和:
casper.thenEvaluate(function addID() {
$("label:contains('unique text')").parent().next().attr('id', 'uniqueID');
});
casper.then(function getText() {
var target = this.getHTML('td#uniqueID');
this.echo(target);
});
這給了我:
CasperError: No element matching selector found: td#uniqueID
爲什麼我casper.thenEvaluate
功能沒有創造我正在尋找的td#uniqueID
?
如果我這樣做this post's answer:
casper.then(function getText() {
this.evaluate(function addID() {
$("label:contains('unique text')").parent().next().attr('id', 'uniqueID');
});
var target = this.thenEvaluate(function returnText() {
return $('#uniqueID').text();
});
this.echo(target);
});
我得到一個[Object Casper]
這似乎正是它聽起來像。它充滿了waitForContent
,scrollTo
等..
注:上面的代碼塊是不正確的(as was pointed out in this answer by Artjom B.)並更改爲此:
casper.then(function getText() {
this.evaluate(function addID() {
$("label:contains('unique text')").parent().next().attr('id', 'uniqueID');
});
var target = this.fetchText('#uniqueID');
this.echo(target);
});
的問題仍然存在。請參閱下面的答案以獲得解決方案。
非常感謝您對這個問題,我其實是有試了99種不同的方式(包括這樣的^),但我不知道哪種方式是正確的,我只有k無論如何,我最終都會得到同樣的結果。我會更新我原來的帖子,以反映正確的方式來調用這些。 –
您應該**不**編輯您的答案以用有效代碼替換錯誤的代碼,因爲具有相同問題的下一個用戶可能不明白問題及解決方法。 –
我很抱歉,這是比實際問題更多的錯誤,所以我認爲最好清除代碼。我會編輯它以包含兩者。 –