selenium-webdriver 在 ie10 上通过 move_to_element 触发悬停问题
selenium-webdriver issues triggering hover via move_to_element on ie10
我正在使用远程网络驱动程序来测试 SauceLabs 上的不同配置。我的其中一个页面有一个 ajax 函数,可以加载扩展表单部分。加载由特定表单元素的模糊触发,或者如果有人将鼠标悬停在 .form-actions div 上。我正在尝试通过 webdriver 重新创建此行为。
以下行为在 ie9 和 chrome 上符合预期(加载表单的第二部分),但在 ie10 上停止工作:
nxt_btn = self.sel.find_element_by_css_selector(
NEXT_BTN_SELECTOR)
ActionChains(self.sel).move_to_element(nxt_btn).perform()
self.wait_until_visible('input[name="next_to_load"]')
如果我调出 ie10 浏览器并在手动测试中移动鼠标,表单会正确扩展,所以似乎是 remove webdriver 没有触发输入的 'blur' 或 'hover' 在表单操作 div 上。
有什么方法可以更改我的 webdriver 测试代码或我的站点以使其适用于 ie10?
当我 运行 在 IE 上测试时(在我的例子中是 IE11),悬停在这个代码下工作正常(本地)
hover = ActionChains(self.browser).move_to_element(elem)
hover.perform()
当我在 Saucelabs 上 运行 时,运气不好。我终于在 javascript 中实现了(使用我找到的代码 here)。我最终这样做了
def hover_over(self, params):
if self.driver.desired_capabilities['browserName'] in ['safari', 'internet explorer']:
print "Javascript Hovering over = " + params['menu']
self.js_hover_over(params )
else:
print "Std Hovering over = " + params['menu']
self.std_hover_over(params)
def js_hover_over(self, params):
js_script = ''.join(["var elem = document.getElementById('",
params['menu'],
"');",
"if (document.createEvent) {",
"var evObj = document.createEvent('MouseEvents');",
"evObj.initEvent('mouseover', true, false);",
"elem.dispatchEvent(evObj);",
"} else if (document.createEventObject) {",
"elem.fireEvent('onmouseover');",
"}"])
self.driver.execute_script(js_script)
def std_hover_over(self, params):
elem =self.driver.find_element_by_id(params['menu'])
hover = ActionChains(self.browser).move_to_element(elem)
hover.perform()
我正在使用远程网络驱动程序来测试 SauceLabs 上的不同配置。我的其中一个页面有一个 ajax 函数,可以加载扩展表单部分。加载由特定表单元素的模糊触发,或者如果有人将鼠标悬停在 .form-actions div 上。我正在尝试通过 webdriver 重新创建此行为。
以下行为在 ie9 和 chrome 上符合预期(加载表单的第二部分),但在 ie10 上停止工作:
nxt_btn = self.sel.find_element_by_css_selector(
NEXT_BTN_SELECTOR)
ActionChains(self.sel).move_to_element(nxt_btn).perform()
self.wait_until_visible('input[name="next_to_load"]')
如果我调出 ie10 浏览器并在手动测试中移动鼠标,表单会正确扩展,所以似乎是 remove webdriver 没有触发输入的 'blur' 或 'hover' 在表单操作 div 上。
有什么方法可以更改我的 webdriver 测试代码或我的站点以使其适用于 ie10?
当我 运行 在 IE 上测试时(在我的例子中是 IE11),悬停在这个代码下工作正常(本地)
hover = ActionChains(self.browser).move_to_element(elem)
hover.perform()
当我在 Saucelabs 上 运行 时,运气不好。我终于在 javascript 中实现了(使用我找到的代码 here)。我最终这样做了
def hover_over(self, params):
if self.driver.desired_capabilities['browserName'] in ['safari', 'internet explorer']:
print "Javascript Hovering over = " + params['menu']
self.js_hover_over(params )
else:
print "Std Hovering over = " + params['menu']
self.std_hover_over(params)
def js_hover_over(self, params):
js_script = ''.join(["var elem = document.getElementById('",
params['menu'],
"');",
"if (document.createEvent) {",
"var evObj = document.createEvent('MouseEvents');",
"evObj.initEvent('mouseover', true, false);",
"elem.dispatchEvent(evObj);",
"} else if (document.createEventObject) {",
"elem.fireEvent('onmouseover');",
"}"])
self.driver.execute_script(js_script)
def std_hover_over(self, params):
elem =self.driver.find_element_by_id(params['menu'])
hover = ActionChains(self.browser).move_to_element(elem)
hover.perform()