getLocation() Selenium WebDriver API 返回值的理解

TDH*_*DHM 5 selenium selenium-webdriver

在 Selenium WebDriver API 中,有一个getLocation()返回点的方法,包含元素左上角的位置。比方说,它返回(x, y)

(x, y)与桌面(浏览器处于全屏模式时)屏幕分辨率或视口(视口,浏览器窗口内网页的可见区域)分辨率相关的点吗?

编辑

根据我对这个问题的回答,我可以猜测getLocation()返回点是各自桌面的屏幕分辨率或整个浏览器的(包括工具栏、搜索栏等)而不是视口的。我只是想确保如果我的想法是正确的,如果是,为什么getLocation()会做出这样的行为?是否有任何 Selenium WebDriver 方法,它将返回与视口相关的元素点?

如果我错了,请纠正。

mut*_*utt 2

无论可见性如何,页面上的“确切位置”。

这就是为什么在进行图像裁剪时,如果元素与整个屏幕不匹配,它会尝试在屏幕截图之外进行裁剪,因为实际元素大小/位置超出了可见屏幕。

但是,如果您正在查找实际的页面属性并将其与基于位置的元素大小进行比较,您可以确定是否应该存在滚动条。 element在下面的示例中是一个实现,IWebElement并且ICoordinates单个IWebElement不会为您提供ICoordinates下面使用的接口。

    Point p = element.LocationOnScreenOnceScrolledIntoView;
    OpenQA.Selenium.Interactions.Internal.ICoordinates p2 = element.Coordinates;
Run Code Online (Sandbox Code Playgroud)

上述两者在捕获位置方面略有不同。LocationOnScreenOnceScrolledIntoView 包括滚动到元素,然后返回基于屏幕左上角的位置。

坐标以各种方式给出了具体位置,并包括LocationInViewport我相信可以提供您正在寻找的内容的属性。

    p = p2.LocationInViewport;
    p = p2.LocationOnScreen;
    p = p2.LocationInDom;
    object obj = p2.AuxiliaryLocator;
Run Code Online (Sandbox Code Playgroud)