我似乎无法让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
谢谢
答案 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事件触发而不是本机点击来模拟用户交互。这有其优点和缺点。希望它有所帮助!