我在Java中使用Selenium Web服务器,以便自动化许多网页。
例如:
WebDriver driver = new FirefoxDriver();
driver.get(url);
WebElement element = driver.findElement(By.id("some_id"));
如何获得element
的绝对位置?
在Javascript中,我可以获取DOM中任何元素的offsetTop
和offsetLeft
值:
var element = document.getElementById("some_id");
var offsetTop = element.offsetTop;
var offsetLeft = element.offsetLeft;
所以首先想到的是用JavascriptExecutor
调用上面的脚本。
但我想避免这种情况。有没有其他方法可以用Selenium获取这些值?
由于
答案 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
),因此在尝试验证位置时要小心......