Selenium:使用C#获取元素的动态坐标

时间:2015-01-13 00:30:53

标签: c# selenium-webdriver

使用IWebElement.Location,我可以获取元素左上角相对于页面左上角的坐标。

但是这个位置并没有告诉我元素在当前浏览器窗口中的位置,也就是说,它是在屏幕外还是在屏幕上,如果是在屏幕上,那么无论是在顶部还是底部或中间等附近。有没有办法在C#中获取此信息?

谢谢!

编辑:
对于上下文,我试图解决的问题是这样的:
1.创建Selenium WebDriver实例并转到页面http://en.wikipedia.org/wiki/Selenium_(software)
2.单击Selenium IDE上的Contents表上的链接 我需要验证单击该链接是否将我带到页面上的Selenium IDE部分,也就是说,Selenium IDE部分现在显示在浏览器窗口的顶部附近。

2 个答案:

答案 0 :(得分:0)

姗姗来迟,您正在寻找的是显示。

driver.FindElement(By.Id("MyID")).Displayed

或者,在您的情况下:

IWebElement.Displayed;

答案 1 :(得分:0)

也许这就是您正在寻找的答案。你可能不得不依赖javascript。这就是我的想法:JQuery get the location of an element relative to window

或者,等等!你可以用纯硒来做到这一点。 (与链接中的基本思想相同。)

  1. 获取您知道的元素的位置:IWebElement.Location
  2. 获取浏览器窗口信息 一个。获取窗口的大小:IWebDriver.Manage()。Window.Size 湾如果这不起作用,你将不得不使用(IJavaScriptExecutor)IWebDriver.ExecuteScript(“arguments [0] .scrollTop”,IWebElement);或者等同的javascript executor命令是Firefox的$(window).scrollTop()
  3. 的控制台命令
  4. 做一些数学:窗口大小x - 浏览器信息x。窗口大小y - 浏览器信息y
  5. 如果它是否定的,那就是屏幕上方的。如果它是正的,但大于窗口大小,则它在屏幕下方低。