【问题标题】:is there any Alternative method for trigger in capybara?水豚有没有其他触发方法?
【发布时间】:2012-12-06 17:41:21
【问题描述】:

我尝试了以下代码:

page.find("#{element_name}").trigger(:mouseover)        

我收到了错误:

Capybara::NotSupportedByDriverError (Capybara::NotSupportedByDriverError)

我正在使用 selenium 网络驱动程序。

根据以下 URL 触发器在 selenium web-driver 中没有实现: Unable to trigger mouse event in Capybara test

是否有任何替代方法来执行鼠标悬停元素而不是在水豚中使用触发器?

【问题讨论】:

    标签: ruby capybara mouseover


    【解决方案1】:

    page.execute_script(some_javascript),尤其是some_javascript = "$(selector).trigger(event)"。这将适用于所有支持 js 的驱动程序。请注意,page.evaluate_script(some_javascript) 也可以工作,但不能保证也不建议这样做(仅在脚本返回原语时使用 evaluate_script)。

    我的意思是:执行你想要的(触发事件)的客户端脚本。

    【讨论】:

    • 感谢您的回复。我没有使用 capybara-webkit。我正在使用 capybara 1.1.2 和 Selenium-webdriver 2.25.0。水豚有没有其他触发方法?使用此配置。
    • @Manikandan:我写的是执行原始 JavaScript。尽管它看起来与您的代码非常相似,但它是不同的。它不像您的示例那样依赖 Capybara 的查找器和 #trigger 方法。这是最简单的解决方案,它适用于每个支持 JS 的驱动程序。如果它对您不起作用,那么您根本无法运行 JS。
    • @Manikandan:哎呀,我忘记了字符串周围的引号,是什么让我的回答有点混乱。 some_javascript 是一个字符串,其中包含要使用 #execute_script 执行的任意一段 JavaScript 代码,每个支持 JS 的驱动程序都支持它。
    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 2011-11-27
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多