ruby + selenium-webdriver actionbuilder

时间:2012-08-02 18:41:58

标签: ruby selenium automation selenium-webdriver

我似乎无法让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

谢谢

2 个答案:

答案 0 :(得分:1)

不是正面的,但我认为对Firefox 14.0.1的更新可能会破坏它。我们的测试也破了。我还在努力修复。

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

答案 1 :(得分:0)

我遇到了与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事件触发而不是本机点击来模拟用户交互。这有其优点和缺点。希望它有所帮助!