如何使用watirwebdriver在运行时更改div的Style属性

时间:2014-07-17 17:04:47

标签: watir-webdriver

我有一个div,其高度非常低。我无法访问位于div底部的一些子元素。我试着滚动使用  element .elements.last.wd.location_once_scrolled_into_view,我无法滚动它。

然后我试着看看是否可以增加div的高度,以便脚本可以查看所有节点。原始样式为style = 'overflow-y:auto;overflow-x:auto;width:150px;height: 350px;

我用来修改它的代码是

element = @browser.div(:id => 'div:d')
puts element.attribute_value('style')
script = "return arguments[0].style = 'overflow-y:auto;overflow-x:auto;width:150px;height: 750px; '"
@browser.execute_script(script, element)
puts "edited height"
puts element.attribute_value('style')

我仍然将样式值视为overflow-y:auto;overflow-x:auto;width:150px;height: 350px;。 是否无法在运行时编辑div的高度?

1 个答案:

答案 0 :(得分:2)

<强>问题

arguments[0].style =看起来不是跨浏览器兼容的。当我使用Firefox运行代码时,高度已更新。相反,在Chrome中运行时,高度未更新。

Mozilla开发者页面(https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.style)上提到了这种差异:

  

除了在Opera中,通过为其指定字符串,可以 来设置样式   (只读)样式属性,如elt.style =&#34; color:blue;&#34;。这是   因为style属性返回CSSStyleDeclaration对象。   相反,您可以设置样式属性,如下所示:

<强>解决方案

要更改样式属性值,最好使用setAttribute方法:

script = "arguments[0].setAttribute('style', 'overflow-y:auto;overflow-x:auto;width:150px;height:750px;')"

但是,考虑到你只想改变身高,你可以这样做:

script = "arguments[0].style.height = '750px';"