使用Selenium Web驱动程序获取元素的绝对位置

bar*_*nos 6 javascript java dom selenium-webdriver

我在Java中使用Selenium Web服务器,以便自动化许多网页.

例如:

WebDriver driver = new FirefoxDriver();
driver.get(url);
WebElement element = driver.findElement(By.id("some_id"));
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得绝对的位置element

在Javascript中,我可以获取DOM中任何元素的值offsetTopoffsetLeft值:

var element    = document.getElementById("some_id");
var offsetTop  = element.offsetTop;
var offsetLeft = element.offsetLeft;
Run Code Online (Sandbox Code Playgroud)

因此,首先想到的是用上面的脚本调用JavascriptExecutor.

但我想避免这种情况.有没有其他方法可以用Selenium获得这些值?

谢谢

小智 5

在 Python 中,这将获得 web 元素的顶部偏移量:

driver = webdriver.Chrome()
driver.get(url)
element = driver.find_element_by_id('some_id')
offset_top = element.get_attribute('offsetTop')
Run Code Online (Sandbox Code Playgroud)

由于两者都使用 Selenium,那么在 Java 中等效的将是(未经测试):

WebDriver driver = new FirefoxDriver();
driver.get(url);
WebElement element = driver.findElement(By.id("some_id"));
int offsetTop = element.getAttribute("offsetTop");
Run Code Online (Sandbox Code Playgroud)


Mar*_*tin 2

您尝试过使用getLocation()的方法吗WebElement?似乎正在做你需要的事情......

这是 API 文档:

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html

但是,根据站点的构建方式,元素位置可能取决于窗口的大小(检查style="position:fixed"),因此在尝试验证位置时要小心...