2013-02-26 54 views
2

样式返回完整的价值我使用下面的id元素的硒的getAttribute(“风格”)方法: -的getAttribute不是硒

<div id="ntsDiv_1" style="width: 250px; text-align: left; white-space: normal; top: 1090px; left: 131px; visibility: hidden;" class="mlt-pop-container"> 

但API是只返回值的一半。它正在返回width: 250px; text-align: left; white-space: normal;并且样式的重新部分被裁剪。

我试图提取可见性的值,但该方法没有返回样式的完整值。因此,我无法确定能见度的正确值。

我执行System.out.println("Style is:- "+super.getElement(NEXTAG_STORES_DIV).getAttribute("style"));

NEXTAG_STORES_DIV对应于id元素的XPath和与XPath

super.getElement提取元素

请帮我!

+0

那么调用什么样的硒的版本?什么浏览器?这是什么语言? – Arran 2013-02-26 12:16:11

+0

使用Junit,Firefox,版本我不知道 – vipin8169 2013-02-26 12:18:11

+0

你不是最好找出来吗?什么版本的Firefox? – Arran 2013-02-26 12:44:40

回答

4

我刚刚在Selenium 2.30.0上试了一下,它工作正常,整个属性被返回。

试试下面的东西(所有的例子假设element是你需要测试WebElement):

  1. 真的确保只有返回属性的一部分。你不是把它打印到控制台吗?许多调音台的线路长度有限。尝试设置您的控制台以显示长行。编程检查返回值的长度,或请评价

    element.getAttribute("style").contains("visibility") 
    
  2. 尝试升级硒库,如果你能。我不知道任何与属性获取有关的错误,但可能已经有一些现在(版本2.30.0)解决了。

  3. 请尝试不同的浏览器/ OS /体系结构。如果它在某个地方工作,你会知道这是一个特定的浏览器/驱动程序/操作系统/体系结构/任何问题,你可能会关注它并修复它或file a bug

  4. 如果你只是想知道某元素是否可见或不可见,正确的和一般首选的方法是调用

    element.isDisplayed() 
    

    这种方法需要的所有规则照顾您可能需要以检查以确定它是否实际可见或不可见。

  5. 如果style值在页面上动态变化(即,它没有静态写入页面的源代码中),WebDriver无法真正看到它,因为它没有选择动态更改。尝试通过JavaScript访问值:

    if (!driver instanceof JavascriptExecutor) { 
        throw new IllegalStateException("JavaScript not enabled for this driver!"); 
    } 
    JavascriptExecutor js = (JavascriptExecutor)driver; 
    String styleAttribute = (String)js.executeScript("return arguments[0].style", element); 
    
  6. 如果你确实需要得到实际使用的浏览器,而不是一个在style属性附加伤害的CSS visibility属性的计算值(如果有任何ISN” t any或者以某种方式被覆盖),您需要使用JavaScript的getComputedStyle()方法。(由this article on quirksmode.org描述)的一种方法是这样的:

    var elem = arguments[0]; 
    if (elem.currentStyle) { 
        var vis = elem.currentStyle['visibility']; 
    } else { 
        var vis = document.defaultView.getComputedStyle(elem, null).getPropertyValue('visibility'); 
    } 
    return vis; 
    

    同样,这应该通过

    String visibility = (String)js.executeScript(here_goes_the_whole_script, element); 
    
+0

感谢您的帮助 其实问题是visibilty样式属性值变得可见后,我悬停链接,这导致弹出。可见性属性定义为弹出,使用超级.pause有一段时间,我可以看到所有的内联属性。 – vipin8169 2013-02-27 04:22:54

+0

但是,我不知道为什么remaninig属性值不会出现,因为即使弹出窗口不可见,它们仍然可以在我的萤火虫中看到 – vipin8169 2013-02-27 04:34:23