元素当前不可见,因此单击按钮时可能无法进行交互

时间:2016-04-11 09:19:02

标签: javascript angularjs jasmine protractor

我的Protrator代码是

element(by.dataHook("delete-button")).click();

获得:

  

元素目前不可见,因此可能无法与

进行交互

HTML来源:

<button class="md-icon-but" type="button" ng-transclude="" ng-click="g" translate="loc" aria-label="Delete" title="Delete">
    <md-icon md-svg-icon="ass" data-hook="delete-button" class="ng-scope" aria-hidden="true"><svg xmlns="ht" width="100%" height="100%" viewBox="0 0 24 24" fit="" preserveAspectRatio="xMidYMid meet" focusable="false"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"></path></svg></md-icon>
    <div class="md"></div></b>

如何解决它并成功点击?

2 个答案:

答案 0 :(得分:1)

通常情况下,只需要maximize the browser window

browser.driver.manage().window().maximize();

请注意,在Chrome + Mac上,您当前是have to do it differently

以下是其他一些有助于他人的事情:

  • 验证没有与定位器匹配的其他元素。如果存在另一个与实际上不可见的定位器匹配的元素,则可能会出现此错误。
  • 等待element to be clickable

    var EC = protractor.ExpectedConditions,
        elm = $("button[title=Delete]");
    
    browser.wait(EC.elementToBeClickable(elm), 5000);
    
  • 元素的
  • scroll into view

    var elm = $("button[title=Delete]");
    browser.executeScript("arguments[0].scrollIntoView();", elm);
    
  • 点击via javascript

    var elm = $("button[title=Delete]");
    browser.executeScript("arguments[0].click();", elm);
    
  • 移至元素并点击“浏览器操作”:

    var elm = $("button[title=Delete]");
    browser.actions()
        .mouseMove(elm)
        .click()
        .perform();
    

答案 1 :(得分:0)

var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.
browser.wait(EC.elementToBeClickable($('#abc')), 5000);