如何用 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();
}
}输出

广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言
C++
C#
MongoDB
MySQL
JavaScript
PHP