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

时间:2014-01-30 15:59:56

标签: java javascript dom selenium-webdriver

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

例如:

WebDriver driver = new FirefoxDriver();
driver.get(url);
WebElement element = driver.findElement(By.id("some_id"));

如何获得element的绝对位置?

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

var element    = document.getElementById("some_id");
var offsetTop  = element.offsetTop;
var offsetLeft = element.offsetLeft;

所以首先想到的是用JavascriptExecutor调用上面的脚本。

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

由于

2 个答案:

答案 0 :(得分:2)

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

driver = webdriver.Chrome()
driver.get(url)
element = driver.find_element_by_id('some_id')
offset_top = element.get_attribute('offsetTop')

由于两者都使用Selenium然后在Java中等效(未经测试):

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

答案 1 :(得分:1)

您是否尝试过使用getLocation()的{​​{1}}方法?似乎做你需要的......

以下是API文档:

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

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