如何使用Selenium设置隐藏输入的值?

时间:2013-05-01 21:43:31

标签: ruby firefox selenium

我已经看过this,但没有运气。

我已经尝试了这个例子并且说undefined browserbot,我也尝试过简单的:

@browser.navigate.to "http://example.com"
@browser.execute_script("$('#hiddenthing').val('foo bar')")

根本不起作用,如果我尝试在没有javascript的情况下设置值,则会显示you can't interact with hidden elements

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

Selenium WebDriver无法与隐藏元素交互,它只能找到它们。如果您尝试在隐藏元素上进行任何基于用户的交互,您将收到上面看到的错误。

这是因为创建SWD是为了模拟用户可以直接执行的操作(除了少数例外)。能够与隐藏元素互动不属于社署范围。

但是,SWD确实能够将任何javascript注入到浏览器的DOM中(这使得处理这些类型的需求更加合理,如果有点困难的话)。

通过执行javascript尝试这两种方式(正如您从链接的上述线程中看到的那样)。请记住,它需要使用return命令:

@browser.execute_script("return document.getElementById('hiddinthing').value = 'foo';")

或者如果你有jQuery

@browser.execute_script("return $('#hiddenthing').val('foo');")