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

Rya*_*yan 2 ruby firefox selenium

我已经看过这个,但没有运气.

我试过这个例子,它说undefined browserbot,我也尝试过这个简单:

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

这根本不起作用,如果我试图设置没有javascript的值,它说you can't interact with hidden elements.

有什么建议?

bbb*_*bco 5

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

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

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

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

@browser.execute_script("return document.getElementById('hiddinthing').value = 'foo';")
Run Code Online (Sandbox Code Playgroud)

或者如果你有jQuery

@browser.execute_script("return $('#hiddenthing').val('foo');")
Run Code Online (Sandbox Code Playgroud)