Gildas 7 лет назад
Родитель
Сommit
04362d9f45
2 измененных файлов с 21 добавлено и 16 удалено
  1. 11 8
      cli/back-ends/webdriver-chrome.js
  2. 10 8
      cli/back-ends/webdriver-firefox.js

+ 11 - 8
cli/back-ends/webdriver-chrome.js

@@ -87,16 +87,19 @@ exports.getPageData = async options => {
 				window.setSize(options.browserWidth, options.browserHeight);
 			}
 		}
-		await driver.get(options.url);
 		let scripts = SCRIPTS.map(scriptPath => fs.readFileSync(require.resolve(scriptPath)).toString()).join("\n");
 		scripts += "\nlazyLoader.getScriptContent = " + (function (path) { return (RESOLVED_CONTENTS)[path]; }).toString().replace("RESOLVED_CONTENTS", JSON.stringify(RESOLVED_CONTENTS)) + ";";
-		const mainWindowHandle = driver.getWindowHandle();
-		const windowHandles = await driver.getAllWindowHandles();
-		await Promise.all(windowHandles.map(async windowHandle => {
-			await driver.switchTo().window(windowHandle);
-			driver.executeScript(scripts);
-		}));
-		await driver.switchTo().window(mainWindowHandle);
+		const loadPromise = driver.get(options.url);
+		driver.executeScript(scripts);
+		await loadPromise;
+		if (!options.removeFrames) {
+			const windowHandles = await driver.getAllWindowHandles();
+			await Promise.all(windowHandles.map(async windowHandle => {
+				await driver.switchTo().window(windowHandle);
+				driver.executeScript(scripts);
+			}));
+			await driver.switchTo().window(driver.getWindowHandle());
+		}
 		const result = await driver.executeAsyncScript(getPageDataScript(), options);
 		if (result.error) {
 			throw result.error;

+ 10 - 8
cli/back-ends/webdriver-firefox.js

@@ -90,17 +90,19 @@ exports.getPageData = async options => {
 				window.setSize(options.browserWidth, options.browserHeight);
 			}
 		}
-		await driver.get(options.url);
 		let scripts = SCRIPTS.map(scriptPath => fs.readFileSync(require.resolve(scriptPath)).toString().replace(/\n(this)\.([^ ]+) = (this)\.([^ ]+) \|\|/g, "\nwindow.$2 = window.$4 ||")).join("\n");
 		scripts += "\nlazyLoader.getScriptContent = " + (function (path) { return (RESOLVED_CONTENTS)[path]; }).toString().replace("RESOLVED_CONTENTS", JSON.stringify(RESOLVED_CONTENTS)) + ";";
-		const mainWindowHandle = driver.getWindowHandle();
-		const windowHandles = await driver.getAllWindowHandles();
-		await Promise.all(windowHandles.map(async windowHandle => {
-			await driver.switchTo().window(windowHandle);
-			driver.executeScript(scripts);
-		}));
-		await driver.switchTo().window(mainWindowHandle);
+		const loadPromise = driver.get(options.url);
 		driver.executeScript(scripts);
+		await loadPromise;
+		if (!options.removeFrames) {
+			const windowHandles = await driver.getAllWindowHandles();
+			await Promise.all(windowHandles.map(async windowHandle => {
+				await driver.switchTo().window(windowHandle);
+				driver.executeScript(scripts);
+			}));
+			await driver.switchTo().window(driver.getWindowHandle());
+		}
 		const result = await driver.executeAsyncScript(getPageDataScript(), options);
 		if (result.error) {
 			throw result.error;