0

Я использую удаленный webdriver для тестирования различных конфигураций на SauceLabs. На одной из моих страниц есть функция ajax, которая загружает расширенный раздел формы. Нагрузка запускается либо размытием определенного элемента формы, либо если кто-то наводится на div .form-actions. Я пытаюсь воссоздать это поведение через webdriver.selenium-webdriver вызывает запуск наведения с помощью move_to_element на ie10

Следующие ведет себя, как ожидается, на IE9 и хрома (вторая часть формы нагрузок), но перестает работать на 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

Когда я побежал тесты на 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()