【问题标题】:Protractor click not working in IE, but works in chrome量角器点击在 IE 中不起作用,但在 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)",但没有任何效果。

【问题讨论】:

    标签: angularjs ionic-framework protractor selenium-iedriver


    【解决方案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驱动的错
      猜你喜欢
      • 2014-08-31
      • 2015-03-31
      • 2017-10-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多