names
배열 driver.executeScript
에 액세스 할 수 없습니다. 해결책을 제안하십시오.가변 범위 문제를 해결하는 데 도움이 필요
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder().forBrowser('chrome').build();
var flow = webdriver.promise.controlFlow();
var names = ["name1", "name2"];
var len = names.length;
var j = 0
for (var i = 0; i < len; i++) {
flow.execute(function() {
console.log(names[j]); //this works fine.
driver.executeScript(function() {
//console.log(names[j]); //this gives errror [WebDriverError: unknown error: names is not defined]
//console.log('testing'); //this never logs
});
j++;
});
}
서면으로,이 문제는 불가능합니다. executeScript 콜백에서 비동기 코드가 실행되기 전에'j'가 2가 될 것이기 때문에'names [j]'가 정의되지 않았다면 이해할 수 있습니다 (당연히 비동기라고 가정)하지만'names'는 정의되지 않았습니다 ... 그건 단지 가능하지 않습니다. –
Seconded. 이것은 말도 안되는 것처럼 보입니다. 나는 당신이 JSFiddle에서이 에러를 다시 만들 것을 제안한다 - 나는 당신이보고하는 에러가 정말로 당신이 그것을 묘사 할 때 발생한다고 믿을 수 없다. – AmericanUmlaut
크롬 웹 드라이버를 사용했기 때문에 jsfiddle에서 재현 할 수 없습니다. 나는 심지어 cloud9 ide 시도했지만 그 또한 효과가 없습니다. – Triven