现在的网站有很多都是鼠标移到上面去才会显示出相应的一些标签之类的东西,然后再进行操作,但是因为要操作的元素一开始是隐藏的,就没办法直接定位,只能调用action来模拟鼠标悬停操作,也就是下面这句代码:
dr.action.move_to(element).perform
但是,同样的一句代码,在驱动firefox运行就会报错,在驱动chrome和IE就能成功运行,这实在是不科学呀,不可能是代码的问题啊。search了很久终于在http://stackoverflow.com/questions/11783799/ruby-selenium-webdriver-actionbuilder找到了答案,按照上面的说法是firefox这个浏览器的版本问题,版本低了不行,太高了貌似也有问题,要不就是更新gem。不想换浏览器,就把gem更新到最新版本了,可还是没解决问题。所以直接用了第二种方法,在驱动firefox加入了下面一段代码,然后就顺利运行通过了。由于这个问题折腾了我很久,一度觉得是代码写错了,还是值得记录一下的。
profile = Selenium::WebDriver::Firefox::Profile.new profile.native_events = false capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile) dr = Selenium::WebDriver.for :firefox, :desired_capabilities => capabilities
时间: 2024-10-29 13:48:26