Selenium WebDriver 中 getText() 和 getAttribute() 的区别


Selenium WebDriver 是一种自动化工具,用于自动化 Web 应用程序的测试,并确保它们按预期工作。自动化意味着程序员不必编写测试脚本;Selenium 可以无需任何脚本即可编写测试用例。

Selenium 支持各种编程语言,例如 Java、Python、PHP、Ruby、C#、Perl、Scala 等,这意味着 Selenium 可以使用任何这些语言提供测试用例。它支持所有流行的浏览器,例如 Chrome、Firefox、Safari 和 Internet Explorer。Selenium 是一款开源工具,这使得它在开发人员中更加流行。

在本文中,我们将特别介绍 Selenium WebDriver 中 **getText()** 和 **getAttribute()** 方法之间的区别。但在那之前,让我们快速了解一下 HTML 标签和属性。HTML 标签标记 HTML 元素的开始和结束,HTML 属性用于定义 HTML 元素的特性,并放置在元素的开始标签内。所有属性都由两部分组成 - **名称** 和 **值**。例如,

<p align = "left">This is left aligned

这里,**<p>** 是包含元素的标签,**align="left"** 是其属性。

让我们从一个关于 getText() 和 getAttribute() 方法将返回什么的简短示例开始,然后我们将详细讨论这些方法。

请查看以下 HTML 代码 -

<h2 style="font-size: 17px; text-transform:
uppercase;">Enjoy Premium Content at Affordable
Price

这里,**style** 是一个属性,其值可以通过使用 getAttribute() 方法获得。如果我们对该元素应用 getText() 方法,我们将获得文本。

getText() 方法

getText() 方法返回元素的 innerText,即页面上可见的文本及其子元素。内部文本是在开始和结束标签之间的文本。getText() 忽略所有前导和尾随空格。

示例

让我们举个例子来理解它是如何工作的。首先,我们需要使用任何定位器(如 id、class、name、xpath 或 CSS)来识别元素,然后对其应用 getText() 方法以获取元素的文本内容。让我们获取页面上元素 **关于 Tutorials 的职业生涯** 的文本 -

使用 **getText()** 的代码实现 -

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class GetElementText{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver","C:\Users
      \ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
      driver.get("https://tutorialspoint.com/about/about_careers.htm");

      // identify element
      WebElement p=driver.findElement(By.xpath("//h1"));

      //getText() to obtain text
      String s= p.getText();
      System.out.println("Text content is : " + s);
      driver.close();
   }
}

它将产生以下 **输出** -

getAttribute() 方法

getAttribute() 方法获取 HTML 文档中属性包含的文本。它将 HTML 元素属性的值作为字符串返回。

如果未为属性设置值,它将返回 NULL 值。对于具有布尔值的属性,getAttribute() 将返回“True”或 NULL。属性作为参数传递给方法。

示例

使用 getAttribute() 的代码实现。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class GetAttributeMethd{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url ="https://tutorialspoint.com/videotutorials/subscription.php";
      driver.get(url);
      driver.manage().timeouts().implicitlyWait(5,
      TimeUnit.SECONDS);

      // identify element
      WebElement l = driver.findElements(By.cssSelector("h2"));

      // get style attribute with getAttribute()
      System.out.println("getAttribute() method:" + l.getAttribute("style"));
      driver.quit();
   }
}

它将产生以下 **输出** -

结论

总之,getText() 和 getAttribute() 这两种方法都用于从 HTML 元素中检索数据。getText() 方法仅返回 **开始** 和 **结束** 标签之间存在的可见文本(未被 CSS 隐藏)。另一方面,getAttribute() 方法识别并获取 HTML 标签内属性的键值对。

更新于: 2022-07-28

9K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告