如何用Selenium WebDriver C#获取元素原始style属性值
解决Selenium获取原始style属性值的问题
这是个很常见的坑——Selenium的GetAttribute("style")返回的是浏览器计算渲染后的样式值,而不是HTML源码里写的原始属性内容。浏览器会自动把十六进制颜色这类格式统一转换成RGB格式,所以你拿到的是rgb(173, 255, 47),而不是你想要的background:#ADFF2F。
解决方案:用JavaScript直接获取原始属性
要拿到HTML里的原始style属性字符串,我们可以借助JavaScript来直接读取DOM元素的原始属性值,绕过浏览器的样式计算。
在C#中可以这样实现:
// 定位目标元素 IWebElement highlightedText = _driver.FindElement(By.Id("firstHeading")).FindElement(By.CssSelector("th-highlight-span")); // 将驱动转换为JavaScript执行器 IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)_driver; // 执行JS脚本获取原始style属性值 string actualHighlightColour = (string)jsExecutor.ExecuteScript("return arguments[0].getAttribute('style');", highlightedText);
可选:精准提取背景色
如果你的style属性里还有其他样式,只想单独拿到背景色的原始值,可以用正则匹配来精准提取:
string bgColorRaw = (string)jsExecutor.ExecuteScript( "return arguments[0].getAttribute('style').match(/background:#[0-9A-Fa-f]+/)[0];", highlightedText );
这段代码会直接返回background:#ADFF2F,省去后续字符串处理的步骤。
内容的提问来源于stack exchange,提问作者Tester_Giant1
相关产品推荐
相关产品推荐

