SecurityError: CSSStyleSheet.cssRules getter: не разрешен доступ к ошибке таблицы стилей из разных источников при чтении таблицы стилей CSS с использованием Selenium Firefox - PullRequest
1 голос
/ 19 июня 2020

Я использую Selenium с драйвером Java и Chrome / Firefox.

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("javascript.enabled", true);
profile.setPreference("security.fileuri.strict_origin_policy", false);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(FirefoxDriver.PROFILE, profile);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability("acceptInsecureCerts",true);
FirefoxOptions options = new FirefoxOptions();
options.addCapabilities(capabilities);
WebDriver webDriver = new FirefoxDriver(options);

Пытаясь прочитать таблицу стилей CSS

JavascriptExecutor js = ((JavascriptExecutor) driver);
Object properties = js.executeScript("return document.styleSheets");

, я получаю следующую ошибку:

Exception in thread "main" org.openqa.selenium.WebDriverException: SecurityError: CSSStyleSheet.cssRules getter: Not allowed to access cross-origin stylesheet

С драйвером chrome я получаю error error reading property.

Я пытаюсь получить document.styleSheets страницы, но не могу из-за правил CORS. Как их отключить?

1 Ответ

0 голосов
/ 19 июня 2020

Похоже на опечатку. Возможно, вместо documnent вы имели в виду document. Таким образом, ваша строка кода будет выглядеть так:

Object properties = js.executeScript("return document.styleSheets");

Однако это сообщение об ошибке ...

Exception in thread "main" org.openqa.selenium.WebDriverException: SecurityError: CSSStyleSheet.cssRules getter: Not allowed to access cross-origin stylesheet

... подразумевает, что cssRules * Метод 1011 * getter() был заблокирован для доступа к таблице стилей с перекрестным источником .


Подробности

Согласно обсуждению в Невозможно получить доступ к cssRules свойство DOMException: "CSSStyleSheet.cssRules getter: Not allowed to access cross-origin stylesheet" даже если ваше приложение может не иметь таблиц стилей с перекрестным происхождением , если вы используете , эти таблицы стилей с перекрестным происхождением вводятся расширением браузера Ghostery .

Таким образом, быстрое решение - отключить расширение Ghostery , чтобы решить проблему.

...