硒如何在元素

时间:2018-11-19 17:54:18

标签: c# selenium browser-automation

是否可能在另一个元素内找到元素? 如果我们有这样的html

<div> 
<span>Some text 1 </span>
<p>Other text 1</p>
</div>
<div> 
<span>Some text 2 </span>
<p>Other text 2</p>
</div>
<div> 
<span>Some text 2 </span>
<p>Other text 2</p>
</div>

是否可以做这样的事情

IList<IWebElement> elements=driver.FindElements(By.TagName("div"));
for (int i = 0; i < elements.Count; i++)
{
   string text= elements[i].FindElement(By.TagName("span")).Text;
}

我已经尝试了多次,在第二次迭代中,它总是从第一个元素中找到文本。

2 个答案:

答案 0 :(得分:1)

您是否想在p中使用spandiv

使用Xpath()CssSelector()

IList<IWebElement> div_childs = driver.FindElements(By.Xpath("//div/*"));
// or
//IList<IWebElement> div_childs = driver.FindElements(By.CssSelector("div *"));
foreach (var child in div_childs)
{
   string text = child.Text;
   string tag_name = child.TagName;
}

答案 1 :(得分:0)

使用CSS选择器,让它为您完成工作...

foreach (IWebElement element in Driver.FindElements(By.CssSelector("div > span")))
{
    Console.WriteLine(element.Text);
}

这将找到所有DIV子级(>)的SPAN。