如何使用 Selenium C# 遍历 IWebElement 列表
How to iterate through IWebElement list using Selenium C#
我尝试迭代 IWebElement 列表并打印每个 h2,但问题是它只打印第一个 h2
这是我的代码
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Selenium();
}
private static void Selenium()
{
ChromeOptions options = new ChromeOptions();
options.AddArguments("start-maximized","disable-infobars", "--no-sandbox", "--disable-dev-shm-usage",
"--disable-gpu", "--disable-extensions", "--allow-running-insecure-content", "--ignore-certificate-errors",
$"--user-data-dir={AppDomain.CurrentDomain.BaseDirectory}/User Data");
using (IWebDriver driver = new ChromeDriver(options)) {
driver.Navigate().GoToUrl("https://www.amazon.com/-/es/s?i=mobile&bbn=7072561011&rh=n%3A7072561011%2Cp_36%3A-30000%2Cp_72%3A2491149011&dc&fs=true&language=es&qid=1614961572&rnid=2491147011&ref=sr_pg_");
IList<IWebElement> elements = driver.FindElements(By.ClassName("sg-col-inner"));
for (int i = 1; i < elements.Count; i++)
{
Console.WriteLine(elements[i].FindElement(By.XPath("//span[@class=\"a-size-base-plus a-color-base a-text-normal\"]")).Text);
}
Console.ReadLine();
};
}
}
}
这是结果
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
我不知道发生了什么,因为我打印了所有元素文本并且打印正常,但是当我尝试获取所有 h2 时它只打印第一个 h2
要从 <h2>
标签打印产品名称,您可以使用以下 :
CssSelector:
driver.Navigate().GoToUrl("https://www.amazon.com/-/es/s?i=mobile&bbn=7072561011&rh=n%3A7072561011%2Cp_36%3A-30000%2Cp_72%3A2491149011&dc&fs=true&language=es&qid=1614961572&rnid=2491147011&ref=sr_pg_");
IList<IWebElement> elements = driver.FindElements(By.CssSelector("h2>a>span"));
foreach (IWebElement element in elements)
{
Console.WriteLine(element.Text);
}
XPath:
driver.Navigate().GoToUrl("https://www.amazon.com/-/es/s?i=mobile&bbn=7072561011&rh=n%3A7072561011%2Cp_36%3A-30000%2Cp_72%3A2491149011&dc&fs=true&language=es&qid=1614961572&rnid=2491147011&ref=sr_pg_");
IList<IWebElement> elements = driver.FindElements(By.XPath("//h2/a/span"));
foreach (IWebElement element in elements)
{
Console.WriteLine(element.Text);
}
我尝试迭代 IWebElement 列表并打印每个 h2,但问题是它只打印第一个 h2
这是我的代码
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Selenium();
}
private static void Selenium()
{
ChromeOptions options = new ChromeOptions();
options.AddArguments("start-maximized","disable-infobars", "--no-sandbox", "--disable-dev-shm-usage",
"--disable-gpu", "--disable-extensions", "--allow-running-insecure-content", "--ignore-certificate-errors",
$"--user-data-dir={AppDomain.CurrentDomain.BaseDirectory}/User Data");
using (IWebDriver driver = new ChromeDriver(options)) {
driver.Navigate().GoToUrl("https://www.amazon.com/-/es/s?i=mobile&bbn=7072561011&rh=n%3A7072561011%2Cp_36%3A-30000%2Cp_72%3A2491149011&dc&fs=true&language=es&qid=1614961572&rnid=2491147011&ref=sr_pg_");
IList<IWebElement> elements = driver.FindElements(By.ClassName("sg-col-inner"));
for (int i = 1; i < elements.Count; i++)
{
Console.WriteLine(elements[i].FindElement(By.XPath("//span[@class=\"a-size-base-plus a-color-base a-text-normal\"]")).Text);
}
Console.ReadLine();
};
}
}
}
这是结果
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
Apple iPhone 8 GSM desbloqueado, 64GB - espacio gris (restaurado)
我不知道发生了什么,因为我打印了所有元素文本并且打印正常,但是当我尝试获取所有 h2 时它只打印第一个 h2
要从 <h2>
标签打印产品名称,您可以使用以下
CssSelector:
driver.Navigate().GoToUrl("https://www.amazon.com/-/es/s?i=mobile&bbn=7072561011&rh=n%3A7072561011%2Cp_36%3A-30000%2Cp_72%3A2491149011&dc&fs=true&language=es&qid=1614961572&rnid=2491147011&ref=sr_pg_"); IList<IWebElement> elements = driver.FindElements(By.CssSelector("h2>a>span")); foreach (IWebElement element in elements) { Console.WriteLine(element.Text); }
XPath:
driver.Navigate().GoToUrl("https://www.amazon.com/-/es/s?i=mobile&bbn=7072561011&rh=n%3A7072561011%2Cp_36%3A-30000%2Cp_72%3A2491149011&dc&fs=true&language=es&qid=1614961572&rnid=2491147011&ref=sr_pg_"); IList<IWebElement> elements = driver.FindElements(By.XPath("//h2/a/span")); foreach (IWebElement element in elements) { Console.WriteLine(element.Text); }