当前位置: 首页 > 面试题库 >

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

蒙洛华
2023-03-14
问题内容

这是场景。

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

这是我的目标dom

<img id="FlashID1x" border="0" width="300" height="250" style="width:300px;height:250px;" 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());

问题答案:

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 method
WebElement ele = driver.findElement(By.cssSelector("img"));
String naturalWidth = ele.getAttribute("naturalWidth");
String naturalHeight = ele.getAttribute("naturalHeight");

// get the intrinsic size with a piece of Javascript
ArrayList 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 X 1,这基本上是错误的。 这是我的目标dom: 这是我的代码: 问题答案: getSize方法返回呈现的Web元素大小,而不是图像的物理大小。如果您的目标是获取固有的高度和重量,则可以尝试获取naturalWidth和na

  • 问题内容: 我在上设置了20px的高度,但是当它在浏览器中呈现时,其高度仅为14px。 有任何想法吗? 问题答案: 您不能使用和设置和的元素。使用代替。 根据CSS2规范 10.6.1内联非替换元素 该属性不适用。内容区域的高度应基于字体,但是此规范未指定如何。UA可以例如使用字体的em-box或最大升序和降序。(后者将确保在em- box上方或下方具有部分文字的字形仍位于内容区域内,但导致不同字

  • 我为我的angular表单中的表单输入元素设计了一个加载组件,以便在从api加载字段时显示。这里,我必须向< code>app-loader组件提供组件的高度和宽度,以便它可以相应地占用空间。 现在我所做的是使用手动开关 到目前为止,我有如下所示。

  • 问题内容: 如果我知道要通过图像标签显示的图像的高度和宽度,我应该包括height和width属性,还是仅将信息放入CSS中?或两者? 例如 要么 要么 问题答案: 根据Google Page Speed,您应始终在image标签中定义宽度和高度。但是,要验证您不能使用样式标签。 另外,您应始终指定与实际图像相同的高度和宽度,以使浏览器不必像调整大小一样对其进行任何修改。 我建议这样做 编辑: 有

  • 问题内容: 如果我知道要通过图像标签显示的图像的高度和宽度,我应该包括height和width属性,还是仅将信息放入CSS中?或两者? 例如 要么 要么 问题答案: 根据Google Page Speed,您应始终在image标签中定义宽度和高度。但是,要验证您不能使用样式标签。 另外,您应始终指定与实际图像相同的高度和宽度,以使浏览器不必像调整大小一样对其进行任何修改。 我建议这样做 编辑: 有

  • 问题内容: 我有一个表,我想定义和属性。请参见下面的示例。 我现在的问题是浏览器无法使用它。如果我在它上定义它,将被忽略,如果我在一个元素内的一个元素中定义它,则内容具有正确的最小和最大宽度,但表的大小仍然相同。(所以有很多可用空间:/) 我该如何解决? 编辑:我只是注意到问题似乎仅在表处于全屏模式时才会发生。但是,元素的最大宽度不应大于! 例: 问题答案: 对于表单元格,应使用’width’属性