【问题标题】:ruby + selenium-webdriver actionbuilderruby + selenium-webdriver actionbuilder
【发布时间】:2012-07-31 19:09:43
【问题描述】:

我似乎无法让 actionbuilder 在 selenium webdriver 中工作。我正在尝试自动化使用 Javascript 的菜单。我需要将鼠标悬停然后移动并单击鼠标悬停后出现的链接。

$driver.find_element(:id, "top_menu").find_elements(:tag_name, "a").each{ |a|
  if a.attribute('href').include? "javascript"
    then w = a 
    $driver.action.move_to(w).perform
    break
  end
}

我意识到我对这个元素的追求有些模糊,并不是最佳实践。我已经要求为这个元素提供一个 id。任何关于如何使用 actionbuilder 或更好的方法来自动化鼠标移动的建议将不胜感激。

这是我遇到的错误。
`generateErrorForNativeEvents':无法执行本机交互:无法加载本机事件组件。 (Selenium::WebDriver::Error::InvalidElementStateError

谢谢

【问题讨论】:

    标签: ruby selenium automation selenium-webdriver


    【解决方案1】:

    不是肯定的,但我认为 Firefox 14.0.1 的更新可能已经破坏了它。我们的测试也失败了。我仍在努力解决问题。

    更新: 是的,我已降级到 Firefox 13.0.1,现在我的测试正在运行。

    【讨论】:

    • 嗯,那将是一个很大的巧合。我第一次去使用它,它已经坏了。谢谢你的提示。我会尝试并回复你。
    • 或者我升级了 Selenium Webdriver gem 2.25.0 这似乎也可以解决问题
    【解决方案2】:

    我也遇到过 InvalidElementStateError 的问题:无法执行本机交互:当我试图双击一个元素时无法加载本机事件组件

    当我添加以下行时问题已解决

    profile = Selenium::WebDriver::Firefox::Profile.new

    profile.native_events = false

    capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)

    @@driver = Selenium::WebDriver.for :firefox, :desired_capabilities => 能力

    注意:- 执行此操作后,Firefox 测试现在将通过 Javascript 事件触发而不是原生点击来模拟用户交互。这有其优点和缺点。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多