如何使用 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 代码