如何使用 selenium webdriver C# 获取元素样式属性的值

Posted

技术标签:

【中文标题】如何使用 selenium webdriver C# 获取元素样式属性的值【英文标题】:How to get the value of style attribute of an element using selenium webdriver C# 【发布时间】:2018-11-03 10:26:25 【问题描述】:

我想从元素中获取样式值并将其分配给字符串 var。 我尝试使用下面的代码,但是当我尝试返回值'background:#ADFF2F''时它返回值'rgb(173, 255, 47)':

IWebElement highlightedText = _driver.FindElement(By.Id("firstHeading")).FindElement(By.CssSelector("th-highlight-span"));
actualHighlightColour = highlightedText.GetAttribute("style");

这是我想从中获取样式值的网页的src代码:

<h1 id="firstHeading" class="firstHeading" lang="en">
 ::before
 <th-highlight-span style="background:#ADFF2F" data- 
 rwstate="ss">California Proposition 218 (1996)</th-highlight-span>

我尝试使用的代码返回 'rgb(173, 255, 47)' 可以在此处找到,但我想返回背景:#ADFF2F:

element.style 
background: #ADFF2F;
background-image: initial;
background-position-x: initial;
background-position-y: initial;
background-size: initial;
background-repeat-x: initial;
background-repeat-y: initial;
background-attachment: initial;
background-origin: initial;
background-clip: initial;
background-color: rgb(173, 255, 47);

【问题讨论】:

那么,你有什么错误信息吗? @RatmirAsanov 不,我没有收到任何错误消息,我得到 rgb(173, 255, 47) 返回并分配给 actualHighlightColour var 但我想返回背景:#ADFF2F ; 试试highlightedText.GetCssValue("background"); @AmanB 当我使用它时它返回以下“rgb(173, 255, 47) none repeat scroll 0% 0% / auto padding-box border-box” 【参考方案1】:

将 RGB 转换为十六进制格式

 String hex = String.format("#%02x%02x%02x", r, g, b);

这将返回小字母的十六进制,如果想要大写,则只需将 x 替换为 X

【讨论】:

【参考方案2】:

根据您共享的 html 来检索 style 属性,即文本 background:#ADFF2F 您可以使用以下解决方案:

actualHighlightColour = _driver.FindElement(By.CssSelector("h1.firstHeading#firstHeading>th-highlight-span")).GetAttribute("style");

更新

由于上面的表达式仍然返回background: rgb(173, 255, 47);,得到输出为rgb(173, 255, 47)可以使用GetCssValue()方法,可以使用如下解决方案: p>

actualHighlightColour = _driver.FindElement(By.CssSelector("h1.firstHeading#firstHeading>th-highlight-span")).GetCssValue("background");

您可以在How to convert #ffffff to #fff or #fff to #ffffff while asserting the background color rgb(255,255,255) returned by Selenium getCssValue(“background”)找到详细讨论

【讨论】:

我试过了,但它返回“背景:rgb(173,255,47);”而不是背景:#ADFF2F @Tester_Giant1 你能试试更新的答案,让我知道状态吗?

以上是关于如何使用 selenium webdriver C# 获取元素样式属性的值的主要内容,如果未能解决你的问题,请参考以下文章

我们如何使用Selenium Webdriver C#从URL获取特定值?

如何使用selenium从WebDriver获取cookie值?

如何使用 Selenium WebDriver 处理登录弹出窗口?

如何使用 Selenium WebDriver 获取 Inspect Element 代码

Python Selenium.WebDriver 浏览器启动参数设置『Edge如何使用启动参数』

如何在 Selenium Webdriver Python 3 中使用 Chrome 配置文件