首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能在没有高度和宽度的情况下拥有可见元素?

问有没有可能在没有高度和宽度的情况下拥有可见元素?
EN

Stack Overflow用户
提问于 2020-01-09 18:07:47
回答 1查看 561关注 0票数 1

我一直在研究现有的Selenium自动化框架,其中有一段代码可以检查元素的宽度和高度。如果它们只有正值,那么它将是可交互的,如单击、双击等。

代码语言:javascript
复制
public boolean isElementInteractable(WebElement element) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    String offsetWidth = js.executeScript("return arguments[0].offsetWidth;", element).toString();
    String offsetHeight = js.executeScript("return arguments[0].offsetHeight;", element).toString();

    if ((Integer.parseInt(offsetWidth) != 0 && Integer.parseInt(offsetHeight) != 0) && element.isDisplayed()) {
        return true;
    }
    return false;
}

在我的理解中,每个可见/可交互的元素都有正的高度和宽度。我不明白为什么要写这段代码。

你能确认我的理解是否正确吗?如果没有,请帮助我理解哪些情况是可能的。

EN

回答 1

Stack Overflow用户

发布于 2020-01-09 18:23:17

WebElement必须具有宽度和高度才是难以处理的,但在两种情况下都可以认为它是可见的:它具有正的笔划宽度,或者它们具有具有正大小的子节点/文本节点

来自WebDriver specifications Element displayedness

元素显示算法是一种布尔状态,其中true表示显示元素,false表示不显示元素。要计算元素上的状态,请调用调用(bot.dom.isShown, null, element)。

来自github中的bot.dom.isShown_ (第437行)

代码语言:javascript
复制
function positiveSize(e) {
    var rect = bot.dom.getClientRect(e);
    if (rect.height > 0 && rect.width > 0) {
      return true;
    }
    // A vertical or horizontal SVG Path element will report zero width or
    // height but is "shown" if it has a positive stroke-width.
    if (bot.dom.isElement(e, 'PATH') && (rect.height > 0 || rect.width > 0)) {
      var strokeWidth = bot.dom.getEffectiveStyle(e, 'stroke-width');
      return !!strokeWidth && (parseInt(strokeWidth, 10) > 0);
    }
    // Zero-sized elements should still be considered to have positive size
    // if they have a child element or text node with positive size, unless
    // the element has an 'overflow' style of 'hidden'.
    return bot.dom.getEffectiveStyle(e, 'overflow') != 'hidden' &&
        goog.array.some(e.childNodes, function(n) {
          return n.nodeType == goog.dom.NodeType.TEXT ||
                 (bot.dom.isElement(n) && positiveSize(n));
        });
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59661568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档