我正在尝试将鼠标悬停在元素上,但看起来悬停不能按预期工作。示例网站:https://www.covergirl.com/en_us/
我正在尝试将鼠标悬停在第3个菜单项(FACE)上。
find('.global-header__list-link', wait: 5, match: :first, text: 'FACE').hover
这似乎悬停在元素上,因为我可以将项目加下划线,但菜单无法打开。
答案 0 :(得分:1)
我假设您正在使用含有硒的Chrome。
您可以看到hover
状态实际上已设置,因为当您在元素上调用hover
时,“FACE”一词会加下划线。什么不起作用是菜单依赖的任何事件都没有生成。如果没有挖得太远,我猜这个事件就是mouseenter
事件,因为chromedriver有一个已知问题,它在移动到元素时不会生成mouseenter
或mouseleave
个事件(但是生成mouseover
个事件。如果你使用Firefox与selenium而不是Chrome,你会看到菜单在那里工作正常。
如果你需要留在Chrome上,你应该可以解决这个问题,比如
el = find('.global-header__list-link', wait: 5, match: :first, text: 'FACE').hover
execute_script("
var evt = new MouseEvent('mouseenter', { bubbles: false, cancelable: true, view: window });
arguments[0].dispatchEvent(evt);
", el)