【问题标题】:What is the difference between getText() and getAttribute() in Selenium WebDriver?Selenium WebDriver 中的 getText() 和 getAttribute() 有什么区别?
【发布时间】:2015-11-25 06:41:28
【问题描述】:

两者都用于获取标签之间的 WebElement 值。

我的假设对吗?如有错误,请详述。

【问题讨论】:

  • 在以下情况下,使用getText() 可以获得 webElement 值(即)手动测试器,自动化测试器(例如:)<input id="profession-0" type="checkbox" value="Manual Tester" name="profession"> Manual Tester <input id="profession-1" type="checkbox" value="Automation Tester" name="profession"> <label class="checkbox" for="profession-1"> Automation Tester</label>
  • 如果您投反对票,请向我解释您投反对票的原因,以便我改进我的答案/在未来的答案中考虑您的观点。
  • 您可以用谷歌搜索这两者并阅读解释差异的文档。这可能就是这个问题被否决的原因。
  • @JeffC 为了以简单易懂的方式获得答案,我在这里提出了问题。但是,如果它像这样被否决,那么提出问题就没有用了。
  • 重点是你需要做一些基础研究,并且至少对你问的问题有一个基本的了解在你问问题之前。你显然没有这样做,因为如果你只是用谷歌搜索你自己的问题,你就会找到答案。我们不是你的研究团队。我们没有得到报酬来回答问题。期望是您尝试解决自己的问题。一旦您付出了合理的努力但仍然卡住,您然后提出问题,说明您的问题、您尝试过的内容以及遇到的错误。 Read this

标签: java selenium selenium-webdriver


【解决方案1】:
  <input attr1='a' attr2='b' attr3='c'>foo</input>

getAttribute(attr1) 你得到'a'

getAttribute(attr2) 你得到'b'

getAttribute(attr3) 你得到'c'

getText()不带参数只能得到'foo'

【讨论】:

【解决方案2】:

getAttribute() -> 它获取包含 HTML 标记中任意属性之一的文本。假设有一个像

这样的HTML标签
<input name="Name Locator" value="selenium">Hello</input>

现在 getAttribute() 获取 'value' 的属性数据,即“Selenium”。

返回:

属性的当前值,如果该值未设置,则为 null。

driver.findElement(By.name("Name Locator")).getAttribute("value")  //

字段值由 getAttribute("value") Selenium WebDriver 预定义方法检索并分配给 String 对象。

getText() -> 传递 WebElement 的 innerText。 获取此元素的可见(即未被 CSS 隐藏)innerText,包括子元素,没有任何前导或尾随空格。

返回:

这个元素的innerText。

driver.findElement(By.name("Name Locator")).getText();

会出现“你好”

【讨论】:

    【解决方案3】:
    <img src="w3schools.jpg" alt="W3Schools.com" width="104" height="142">
    

    在上面的 html 标记中,我们有不同的属性,例如 srcaltwidthheight

    如果你想从上面的 html 标签中获取任何属性值,你必须在 getAttribute() 方法中传递属性值

    语法:

    getAttribute(attributeValue)
    getAttribute(src) you get w3schools.jpg
    getAttribute(height) you get 142
    getAttribute(width) you get 104 
    

    【讨论】:

      【解决方案4】:

      getText():获取 this 的可见(即不被 CSS 隐藏)innerText 元素,包括子元素,没有任何前导或尾随 空格。

      getAttribute(String attrName):获取元素给定属性的值。 将返回当前值,即使这已被修改后 页面已加载。更确切地说,此方法将返回 给定属性的值,除非该属性不存在,在 这种情况下会返回同名属性的值 (例如对于 textarea 元素的“值”属性)。如果 没有设置任何值,返回 null。 “风格”属性是 尽可能转换为带有尾随的文本表示 分号。以下被视为“布尔”属性,并且 将返回“true”或 null:异步、自动对焦、自动​​播放、 检查,紧凑,完整,控制,声明,默认检查, defaultselected, defer, disabled, draggable, end, formnovalidate, 隐藏,不确定,iscontenteditable,ismap,itemscope,循环, 多个,静音,nohref,noresize,noshade,novalidate,nowrap,打开, 暂停、发布日期、只读、必需、反转、范围、无缝、 seek, selected, spellcheck, truespeed, willvalidate 最后, 以下常见的大写错误的属性/属性名称是 按预期评估:“类”“只读”

      getText() 返回元素的可见文本。

      getAttribute(String attrName) 返回作为参数传递的属性的值。

      【讨论】:

        最近更新 更多