硒得到元素的自然高度和宽度。不应该依赖样式属性。GetSize(),GetLocation()和getRect()无法这样做

【字号: 日期:2024-02-28浏览:40作者:雯心
如何解决硒得到元素的自然高度和宽度。不应该依赖样式属性。GetSize(),GetLocation()和getRect()无法这样做?

getSize方法返回呈现的Web元素大小,而不是图像的物理大小。如果您的目标是获取固有的高度和重量,则可以尝试获取naturalWidth和naturalHeight属性:

WebDriver driver = new FirefoxDriver();webdriverwait wait = new webdriverwait(driver, 20);driver.get('http://stackoverflow.com');// get the intrinsic size with the getAttribute methodWebElement ele = driver.findElement(By.cssSelector('img'));String naturalWidth = ele.getAttribute('naturalWidth');String naturalHeight = ele.getAttribute('naturalHeight');// get the intrinsic size with a piece of JavascriptArrayList result = (ArrayList)((JavascriptExecutor) driver).executeScript('return [arguments[0].naturalWidth, arguments[0].naturalHeight];', ele);Long naturalWidth2 = (Long)result.get(0);Long naturalHeight2 = (Long)result.get(1);解决方法

这是场景。

当使用GetSize()时,GetLocation()针对图像ID“ FlashID1x”起作用,它始终给出250,300,但元素的实际高度和宽度为1 X1,这基本上是错误的。

这是我的目标dom:

<img border='0' alt='' src='http://s2.adform.net/Banners/invisible.gif?bv=2'/>

这是我的代码:

System.out.println('total : '+iframe.size()); //driver.switchTo().frame(frame);org.openqa.selenium.Point point=driver.findElement(By.xpath('.//*[@id=’FlashID1x’]')).getLocation(); System.out.println('X Position : '+point.x); System.out.println('Y Position : '+point.y);System.out.println('X getX : '+point.getX()); System.out.println('Y gety : '+point.getY());Rectangle pointer=driver.findElement(By.xpath('.//*[@id=’FlashID1x’]')).getRect();System.out.println('height : '+pointer.hashCode();System.out.println(' width : '+pointer.getWidth());System.out.println('getHeight : '+pointer.getHeight()); System.out.println(' getWidth : '+pointer.getWidth());

相关文章: