我有以下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小时”的值。 我不明白是什么导致了这个问题。有没有人遇到同样的问题?提前感谢您的帮助。
答案 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
我仍然不知道为什么硒无法获得属性值。