Моя задача - создать минимизированный css-файл с веб-страницы. Так вот мне нужны значения из все css-свойства из всех dom-элементов. Но я не знаю: как получить все вычисленные CSS-стили из определенного dom-элемента?
У меня такой код:
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");
var browser = new ChromeDriver(chromeOptions);
var url = "https://example.com";
browser.Navigate().GoToUrl(url);
var domElement = browser.FindElement(By.TagName("html"));
И я хочу:
var styles = domElement.GetComputedCssStyles();





вы можете использовать метод getCSSValue из IWebElement. Например, чтобы получить цвет фона элемента, вы можете попробовать следующий код.
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");
var browser = new ChromeDriver(chromeOptions);
var url = "https://example.com";
browser.Navigate().GoToUrl(url);
var domElement = browser.FindElement(By.TagName("html"));
var color = domElement.GetCssValue("background-color");
Можете ли вы попробовать следующий код javascript, используя selenium C#;
string properties = ((IJavaScriptExecutor)driver).ExecuteScript("return window.getComputedStyle(arguments[0],null).cssText", domElement);
strArr = properties.split(";")
for (count = 0; count <= strArr.Length - 1; count++)
{
console.info(strArr[count]);
}
Для элемента применяется несколько стилей css. лучше получить тот, который мы хотим
Моя задача - создать минимизированный файл css с веб-страницы. И поэтому мне нужны значения из всех свойств css.
Об этом позаботится дизайнер внешнего интерфейса. Я думаю, вы пытаетесь заняться реверс-инжинирингом.
@Palindromer Я добавил еще одно решение для получения всех вычисленных стилей элемента. Это может быть вам полезно. пожалуйста, дайте мне знать.
Чтобы получить все вычисленные CSS-стили из определенного dom-элемента, вы можете использовать следующую строку кода:
C#:
((IJavaScriptExecutor)driver).ExecuteScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;", myElem);
Пример (Ява) блока кода:
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
WebElement myElem = driver.findElement(By.name("q"));
System.out.println(((JavascriptExecutor)driver).executeScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;", myElem).toString());
Консольный вывод:
{aria-autocomplete=list, aria-haspopup=false, aria-label=Search, autocomplete=off, class=gsfi lst-d-f, dir=ltr, id=lst-ib, maxlength=2048, name=q, role=combobox, spellcheck=false, style=border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; background: transparent url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D") repeat scroll 0% 0%; position: absolute; z-index: 6; left: 0px; outline: medium none currentcolor;, title=Search, type=text, value=}
Спасибо, но мне нужны все заданные css-значения. Мне не нужно определенное значение css.