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

Filling out form with Selenium works on Chrome but not Firefox

我试图在 Firefox 中使用 Selenium 和 ruby 填充文本区域,但由于某些原因,下面的代码不起作用。但是,当我将相同的脚本切换到 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 #<Watir::TextArea: located: true; {:placeholder=>"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 <main>'
    from instabot.rb:36:in `each'
    from instabot.rb:36:in `block in <main>'
    from instabot.rb:35:in `loop'
    from instabot.rb:35:in `<main>'

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

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

一个问题是点不是句点,而是不同的unicode;这将适用于最新的 geckodriver:

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

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

browser.textarea.set "foo"