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

Element is not currently visible and so may not be interacted with when clicking a button

本文关键字:按钮 交互 元素 单击      更新时间:2024-05-10

我的Protator代码是

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>

如何解决并成功点击?

通常,您只需要最大化浏览器窗口:

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

请注意,在Chrome+Mac上,目前您必须以不同的方式进行操作。


以下是一组其他也帮助了其他人的东西:

  • 验证是否有其他元素与定位器匹配。如果与定位器匹配的另一个元素实际上是不可见的,则可能会出现此错误
  • 等待元素可点击:

    var EC = protractor.ExpectedConditions,
        elm = $("button[title=Delete]");
    browser.wait(EC.elementToBeClickable(elm), 5000);
    
  • 滚动到元素的视图:

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

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

    var elm = $("button[title=Delete]");
    browser.actions()
        .mouseMove(elm)
        .click()
        .perform();
    
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.
browser.wait(EC.elementToBeClickable($('#abc')), 5000);