2

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

我试过那个例子,它说undefined browserbot,我也试过简单的:

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

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

有什么建议么?

4

1 回答 1

6

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

这是因为创建 SWD 是为了模拟用户可以直接执行的操作(除了少数例外)。能够与隐藏元素进行交互超出了 SWD 的范围。

但是,SWD 确实提供了将任何 javascript 注入浏览器的 DOM 的能力(这使得处理这些类型的需求更加合理,即使有点困难)。

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

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

或者如果你有 jQuery

@browser.execute_script("return $('#hiddenthing').val('foo');")
于 2013-05-01T21:57:50.263 回答