元素不可点击 - 在本地工作但不在生产中

时间:2016-01-23 18:39:25

标签: angularjs protractor

所以我在Circle上测试时收到此错误,但在生产中没有。我安装了npm,安装了bower,npm更新了,bower更新了,npm运行update-webdriver。

[chrome #1a]   UnknownError: unknown error: Element is not clickable at point (1652, 61). Other element would receive the click: <div class="md-toolbar-tools">...</div>
[chrome #1a]   (Session info: chrome=43.0.2357.130)
[chrome #1a]   (Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Linux 3.13.0-76-generic x86_64

我不确定为什么这个元素在制作时不会被点击,但对于本地来说会很好。我尝试添加一些等待,但我不认为这是问题。我已经看过围绕元素的其他问题,但是它们似乎都是根本无法点击的情况,而不是只在特定环境下工作。

我的页面对象如下所示:

'use strict';

var myObject = function () {
  this.thing1 = element(by.css('md-list'))
  this.thing2 = this.thing1.element(by.css('md-list-item'))
  this.thing3 = this.thing2.element(by.css('button div div h4'))
  this.thing4 = this.thing2.element(by.css('button div md-menu button'))
};

module.exports = new myObject();

我的规格看起来像这样,错误发生在点击线上。

describe('Object directive', function () {
  var myObject;

  browser.driver.manage().window().setSize(1920, 1080);
  browser.get('/#/login');
  browser.waitForAngular();
  myObject = require('./myobject.po.js');

  it('should rename', function () {
    myObject.thing4.click();
    element(by.css('[aria-label=\'Rename Button\']')).click();
    element(by.css('input')).clear();
    element(by.css('input')).sendKeys('Test Name');
    element(by.css('[ng-click="saveName()"]')).click();
    expect(myObject.thing3.getText()).toBe('Test Name');
  });

  it('should delete', function () {
    myObject.thing4.click();
    element(by.css('[aria-label=\'Delete Button\']')).click();
    expect(element(by.css('md-dialog-content div p')).getText()).toBe('Do you want to permanently delete?');
    element(by.css('[ng-click="dialog.abort()"]')).click();
  });

});

1 个答案:

答案 0 :(得分:1)

看起来硒认为某些元素与所需元素重叠,它会发生。

您可以尝试多种方法:

  • 通过JS click()进行点击(参见区别:WebDriver click() vs JavaScript click()):

    browser.executeScript("arguments[0].click()", elm.getWebElement());
    
  • 使用浏览器操作:移至元素,然后点击:

    browser.actions().mouseMove(elm).click().perform();