Ruby selenium 2.0无法从选择框中获取属性值

时间:2016-07-12 16:08:26

标签: ruby selenium

我有以下HTML:

<div class="input-with-icon no-icon">
  <select class="hidden-input js-duration-dropdown" value="4 hours">

当我使用Ruby selenium web驱动程序获取属性值

@driver.find_element(:xpath, "//div[@class=\"input-with-icon no-icon\"]/select[@class=\"hidden-input js-duration-dropdown\"]").attribute("value")

我得到空字符串“”

但是如果我在Chrome控制台中使用JS

document.evaluate("//div[@class=\"input-with-icon no-icon\"]/select[@class=\"hidden-input js-duration-dropdown\"]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.getAttribute("value")

我能够打印出“4小时”的值。 我不明白是什么导致了这个问题。有没有人遇到同样的问题?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

html中select元素的类意味着它被隐藏,而不是显示。如果元素被隐藏,WebDriver将不允许您获取元素的属性。尝试使用Javascript将元素设置为可见,然后获取它的值。

答案 1 :(得分:0)

我终于通过注入JavaScript函数来实现它:

attributes = driver.execute_script('var items = {}; 
for (index = 0; index < arguments[0].attributes.length; ++index) 
{ items[arguments[0].attributes[index].name] = 
arguments[0].attributes[index].value }; return items;', element)

return attributes

我仍然不知道为什么硒无法获得属性值。