【问题标题】:Selenium How to find element inside elementSelenium 如何在元素中找到元素
【发布时间】:2019-04-22 03:23:27
【问题描述】:

是否可以在另一个元素中找到元素? 如果我们有这样的 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;
}

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

【问题讨论】:

  • 您到底要查找/定位哪个元素/文本?你注意到第二个和第三个&lt;div&gt; 是一样的吗?这是否与您的确切用例相匹配?
  • 那么,问题到底出在哪里?你运行代码了吗?

标签: c# selenium browser-automation


【解决方案1】:

您想在div 中获取pspan 吗?

使用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;
}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2021-06-07
      • 2017-12-03
      • 2011-12-21
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多