加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 与Capybara一起获得边境风格

发布时间:2020-12-17 03:54:46 所属栏目:百科 来源:网络整理
导读:我需要获得元素的边框样式.我尝试了以下代码: sample = page.execute_script(" var x = window.document.querySelector('#{path}'); a = window.getComputedStyle(x,null).getPropertyValue('border'); return a;") puts sample 它打印为空. (注意:元素的
我需要获得元素的边框样式.我尝试了以下代码:

sample = page.execute_script("
  var x = window.document.querySelector('#{path}');
  a = window.getComputedStyle(x,null).getPropertyValue('border');
  return a;
")                     
puts sample

它打印为空.

(注意:元素的边框是 – 实心)

解决方法

根据您之前的问题,我假设您使用的是selenium-webdriver.

本机selenium-webdriver元素具有检查计算样式的方法 – Element#css_value.

如果您有一个页面HTML:

<html>
    <body>
        <p style="border-style:solid;">A solid border.</p>
    </body>
</html>

然后你可以使用以下方式获得边框样式:

puts page.first('p').native.css_value('border-style')
#=> 'solid'

请注意代码中:

> Capybara使用page.first(‘p’)找到所需的元素
> native用于获取selenium-webdriver元素
> css_value用于获取计算的样式.请注意,css_value方法必须传递参数’border-style’而不是简写’border’.

更新:

对于您的具体示例:

>似乎如果使用简写的“border”属性,“border-style”属性将为空.相反,您必须使用特定的“border-bottom-style”,“border-left-style”等属性.
>既然您知道元素的id,就可以使用page.find_by_id(‘option’)获取Capybara元素

考虑到上述情况,您可以使用以下方法检查计算的边框样式:

puts page.find_by_id('option').native.css_value('border-bottom-style')
#=> "solid"
puts page.find_by_id('option').native.css_value('border-left-style')
#=> "solid"
puts page.find_by_id('option').native.css_value('border-right-style')
#=> "solid"
puts page.find_by_id('option').native.css_value('border-top-style')
#=> "solid"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读