量角器点击在 IE 中不起作用,但在 chrome 中起作用

Posted

技术标签:

【中文标题】量角器点击在 IE 中不起作用,但在 chrome 中起作用【英文标题】:Protractor click not working in IE, but works in chrome 【发布时间】:2015-11-27 08:24:33 【问题描述】:

我有一些 div 看起来像这样

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

在量角器中,我们搜索并找到 div 元素,检查文本是否符合我们的预期,然后在该元素上调用 click()。测试在 Chrome 中运行良好,但在 IE 中好像没有点击发生.. 破坏测试。

IE 11 是否支持on-tap

我尝试更改为ng-click="foo(param)",但没有任何效果。

【问题讨论】:

【参考方案1】:

我用这些功能解决了这个问题:

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

您可以在浏览器堆栈设置中使用相同的设置:

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找到解决方案。

【讨论】:

【参考方案2】:

我在 IE 中遇到了类似的问题,没有元素可以接收到点击。原因是我将 Windows 中的 全局缩放设置为 >100%(桌面 > rclick > 显示设置)。显然这导致 IEDriver 点击了错误的坐标。

该问题未指定是否可以单击其他元素,但这可能是其他有类似问题的人的答案。

【讨论】:

您能否将其改写为问题的答案? 这适用于我的情况。但是,除了更改 Windows 设置之外,还有其他选择吗?在我的笔记本电脑上 100% 会导致文本非常小【参考方案3】:

有了自动化的 IE 浏览器,它总是很特别。尝试点击链接"via javascript":

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

【讨论】:

终于(我知道)开始尝试这种技术,不幸的是它似乎并没有改变这种情况。【参考方案4】:

我遇到过这样的问题,在 Firefox 中点击不会点击,但在 chrome 中会点击。解决方法是在 chrome 中执行初始单击后添加鼠标向下和鼠标向上操作。

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

更新:

如果您还没有尝试其他想法,您可以尝试:

(双击)

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

我用过的另一件棘手的事情是使用expected conditions来点击一些东西

// 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");

【讨论】:

我注意到您不使用.then() .. 这是故意的还是您认为它会在.then() 中起作用? 刚刚尝试过这种技术,有无承诺。好像没有什么效果。困扰我的是我没有真正的方法来调试它而不会引发错误。想知道这是不是IE驱动的错

以上是关于量角器点击在 IE 中不起作用,但在 chrome 中起作用的主要内容,如果未能解决你的问题,请参考以下文章

Vimeo - 嵌入在 IE 中不起作用

Angular 2 / 4 / 5 在 IE11 中不起作用

Click() 函数在量角器脚本中不起作用

jQuery 函数在 Chrome 中不起作用

透明css在chrome中不起作用

拖放到文件输入在 IE11 中不起作用