嘗試通過casperjs點擊下面的元素點擊,但它不是爲我工作。通過casperjs
<img alt="Pay Button" class="v-button" role="button" src="https://test/wallet-services-web/xo/button.png" tabindex="0" style="cursor: pointer; transition-property: filter; transition-duration: 0.25s; filter: brightness(1);">
我通過了一堆在嵌套的iframe中尋找這個元素,我可以正確地找到它 - 但我似乎無法在它正確點擊。
if (casper.exists('img.v-button')) {
console.log("Found button"); // the exists works - this is logged
casper.click('img.v-button'); // Approach 1: nothing happens
// Approach 2: nothing happens
// var x = require('casper').selectXPath;
// casper.click(x('(//img[@class="v-button"])'));
return true;
} else {
var result = traverseTreeDown();
if (result) {
return true;
} else {
casper.page.switchToParentFrame();
}
}
兩種方法1和2都無法點擊 - 即使我確實正確地在「存在」區域內進入。
這也許是因爲卡斯珀是** **異步。我認爲你在處理點擊之前從函數返回'true'。嘗試在'setTimeout(()=> casper.click(img),0)'中換行。 – Todd
有趣的一點 - 將嘗試併發回。所以,當你在一個「casper.then(function()」)塊的「內部」時,我們不能假定嚴格的順序來完成指令?如果我們需要嚴格排序兩個命令到完成,他們需要在連續的,但是單獨的「casper.then(函數()」塊?或者,通過創建一個超時單獨的線程如你所說...... – Phoeniyx