如何用 Selenium 從所有具有相同類名的 Web 元素列表列印文字?


我們可以使用 Selenium webdriver 從具有相同類名的所有 Web 元素列表中獲取文字。我們可以使用任何定位符,如類名和 By.className 方法、XPath 和 By.xpath 方法,或 CSS 和 By.cssSelector 方法。

讓我們驗證 XPath 表示式 //h2[@class='store-name'],它表示具有與 store-name 相同類名的多個元素。如果我們使用表示式 - $x("//h2[@class='store-name']") 在控制檯中驗證這一點,它將產生所有匹配的元素,如下所示

此外,由於我們需要獲取多個元素,因此我們必須使用返回列表的 findElements 方法。我們將遍歷此列表並使用 getText 方法獲取元素的文字。

語法

List<WebElement> m =
driver.findElements(By.xpath("//h2[@class='store-name']"));

示例

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;
import java.util.List;
public class ElementsSameclsname{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      //URL launch
      driver.get("https://www.justdial.com/Bangalore/Bakeries");
      // identify elements list with same class name
      List<WebElement> m = driver.findElements(By.xpath("//h2[@class='store-name']"));
      // iterate over list
      for(int i = 0; i< m.size(); i++) {
         //obtain text
         String s = m.get(i).getText();
         System.out.println("Text is: " + s);
      }
      driver.quit();
   }
}

輸出

更新於: 2021 年 4 月 3 日

5 千次瀏覽

開啟你的職業生涯

透過完成課程來獲得認證

開始
廣告