2015-09-02 5 views
3

я есть div, который выглядит, как этоттранспортир нажмите не работает в IE, но работает в хроме

<div class="someClassyStuff" on-tap="foo(param)"> Text </div> 

в транспортира мы ищем и находим div элемент, убедитесь, что текст соответствует нашим ожиданиям, а затем вызвать click() на этом элементе. Тест отлично работает в Chrome, но в IE это похоже на то, что клик не происходит. Нарушение теста.

Поддерживает ли IE 11 on-tap?

Я попытался изменить на ng-click="foo(param)", но без эффекта.

ответ

4

Я решил эту проблему с этими возможностями:

exports.config = { 
    capabilities: { 
     'browserName': 'internet explorer', 
     'version': 11, 
     'nativeEvents': false, 
     'unexpectedAlertBehaviour': 'accept', 
     'ignoreProtectedModeSettings': true, 
     'enablePersistentHover': true, 
     'disable-popup-blocking': true 
    } 
}; 

Вы можете использовать то же самое в вашей установке browserstack:

exports.config = { 
    capabilities: { 
     'browser' : 'ie', 
     'browserName': '', 
     'browser_version' : '11', 
     'os' : 'Windows', 
     'os_version' : '7', 
     'browserstack.user': 'XXX', 
     'browserstack.key': 'XXX', 
     'version': 11, 
     'nativeEvents': false, 
     'unexpectedAlertBehaviour': 'accept', 
     'ignoreProtectedModeSettings': true, 
     'enablePersistentHover': true, 
     'disable-popup-blocking': true 
    } 
}; 

Найдено решение в Software Quality Assurance & Testing.

1

С автоматизацией браузера IE это всегда что-то особенное. Попробуйте нажать на ссылку "via javascript":

var elm = element(by.css("div.someClassyStuff")); 
browser.executeScript("arguments[0].click();", elm.getWebElement()); 
+0

только что наконец-то (я знаю) обошел эту технику и, к сожалению, она не изменила ситуацию. – Erik

1

У меня был вопрос, как это, где щелчок не щелкнет в Firefox, но это было бы в хроме. Обходной путь состоял в том, чтобы добавить мышь вниз и мышь вверх после выполнения начального щелчка, который работал в хроме.

browser.getCapabilities().then(function(cap){ 
    element(by.css("div.someClassyStuff")).click(); 
    if(cap.caps_.browserName == "ie"){ 
     browser.actions().mouseDown().mouseUp().perform(); 
    } 
}; 

UPDATE:

другие идеи, которые вы могли бы попробовать, если вы еще не:

(делает двойной щелчок)

element(by.css("div.someClassyStuff")).click().click(); 

другая вещь Я использовал с хитрыми вещами, чтобы щелкнуть, используя expected conditions, чтобы нажать на somet Хин

// Wait for an element to be clickable then click it 
global.waitAndClick = function(element, time, errMessage) { 
    if(typeof(time) ==='undefined') time = 10000; 
    var IsClickable = EC.elementToBeClickable(element); 
    browser.wait(IsClickable, time, errMessage); 
    return element.click(); 
}; 

waitAndClick(element(by.css("div.someClassyStuff")), 5000, "failed to click my elem"); 
+0

Я замечаю, что вы не используете '.then()' .. это специально или будет работать в '.then()' вы думаете? – Erik

+0

просто попробовал эту технику, с обещанием и без нее. Кажется, это не повлияло. Что меня беспокоит, для меня нет реального способа отладить это без ошибки. Удивление, если это ошибка драйвера IE или нет. – Erik

0

У меня была аналогичная проблема с IE, где ни один элемент не мог получить щелчок. Причина заключалась в том, что у меня было глобальное масштабирование в Windows, установленное на> 100% (Desktop> rclick> Настройки дисплея). По-видимому, это привело к тому, что IEDriver нажал на неправильные координаты.

Вопрос не указывает, можно ли щелкнуть другие элементы, но это может быть ответ для других людей с аналогичной проблемой.

+0

Не могли бы вы перефразировать это как ответ на вопрос? – mnwsmit