内联图像alt属性和getText()

时间:2014-01-12 15:39:38

标签: selenium selenium-webdriver

我有这样的事情:

<div id=soandso>
  Having a 
  <img src="cat.gif" alt="Meow">
  always helps
</div>

我在查找div元素时没有问题,当我调用 getText()时,我希望收到&#34; 让Meow始终帮助&#34; ,但我得到没有alt( Meow )描述的文本。

我同意这是预期的行为,但这不是我需要的。

如何优化内联替换文字或至少使用内嵌图像获取文本块,以验证图像在文本中的正确位置?

2 个答案:

答案 0 :(得分:3)

selenium-webdriver在这两种情况下都是这样的,

  1. 将“alt”视为图片标记的属性,而不是Div的元素文本。
  2. 将“始终有帮助”视为Div元素的innerText。
  3. 我建议....分别提取Div文本和img(alt)文本。如果文本遵循模式,请尝试在显示图像属性之后或之前识别序列。

    WebElement Div_elem=Driver.findElement(By.id("soandso"));
    String Div_text = Div_elem.getText();
    String img_text=Div_elem.findElement(By.tagName("img")).getAttribute("alt");
    
    如果有帮助,

    会很高兴

答案 1 :(得分:1)

我在这里找到了一个解决方案:How to get text of an element in Selenium WebDriver (via the Python api) without including child element text?

他建议的解决方案:

def get_text_excluding_children(driver, element):
    return driver.execute_script("""
    return jQuery(arguments[0]).contents().filter(function() {
        return this.nodeType == Node.TEXT_NODE;
    }).text();
    """, element)

传递给函数的元素可以是从find_element...()方法获得的元素(即它可以是WebElement个对象。)

  • 基本上建议您使用jQuery来获取div中的文本。