我正在使用远程webdriver来测试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浏览器并在手动测试中移动鼠标,表单会正确扩展,所以看起来这是删除webdriver不会触发输入的“模糊”或“鼠标悬停”形式行动div。
有没有办法可以更改我的webdriver测试代码或我的网站,以便使用ie10工作?
答案 0 :(得分:0)
当我在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()