使用Selenium填写表单适用于Chrome但不适用于Firefox

我试图在Firefox中使用Selenium和ruby填写textarea,但由于某种原因,下面的代码不起作用。 当我将相同的脚本切换到Chrome驱动程序时,它确实有效。

browser.textarea(:placeholder => "Add a comment…").set "#{randomly_chosen_comment}" 

在Firefox上,我收到此错误:

 /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/elements/element.rb:623:in `raise_present': element located, but timed out after 30 seconds, waiting for #"Add a comment…", :tag_name=>"textarea"}> to be present (Watir::Exception::UnknownObjectException) from /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/elements/element.rb:669:in `rescue in element_call' from /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/elements/element.rb:680:in `element_call' from /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/user_editable.rb:11:in `set' from instabot.rb:68:in `block (2 levels) in ' from instabot.rb:36:in `each' from instabot.rb:36:in `block in ' from instabot.rb:35:in `loop' from instabot.rb:35:in `' 

我已经在这个工作了好几个小时,我似乎无法弄清楚为什么它不起作用。 我需要让它在Firefox上运行。 任何帮助非常感谢!!

我不能重现你的问题; 它在不使用已弃用的驱动程序的情况下为我工作。 您使用的是最新的Firefox和geckodriver版本吗?

一个问题是点不是周期,而是不同的unicode; 这将适用于最新的geckodriver就好了:

 browser.textarea(placeholder: /Add a comment/).set "#{randomly_chosen_comment}" 

或者,因为这是页面上的第一个textarea ,您可以这样做:

 browser.textarea.set "foo"