【问题标题】:C# Selenium Driver - get all elements by textC# Selenium 驱动程序 - 通过文本获取所有元素
【发布时间】:2021-07-09 13:20:51
【问题描述】:
        private IWebDriver webDriver;

        [SetUp]
        public void Setup()
        {
            webDriver = new FirefoxDriver();
            webDriver.Navigate().GoToUrl("https://localhost:44311/");
        }

        [Test]
        public void ButtonsCount_IsCorrect_IsTrue()
        {
            var buttons = webDriver.FindElement(...));

            ...
        }

简单场景 - 网站包含动态创建的按钮。我想确保按钮数量与预期相同。

用 XPath 捕捉它很容易,除了 XPath 指向某个元素,这里我们想捕捉多个动态创建的元素,但每个元素看起来像这样:

<a><i></i>Details</a>

唯一的区别是href 领导的地方,我跳过了课程,因为它们在这里并不重要。

结论是,最好搜索所有包含字符串Details&lt;a&gt;。现在的问题是,如何在 C# 驱动程序中做到这一点。

【问题讨论】:

  • 您是否提供了足够的等待以正确加载页面?如果你仍然得到list.Count 0 那么检查元素是否存在于 iframe 中?
  • @KunduK 我认为应该没问题,因为By.LinkText 工作正常。但是如果我想搜索div或其他任何东西,我仍然想知道如何解决它。

标签: c# asp.net selenium automation


【解决方案1】:

您可以使用 findElements 和 xpath 来查找元素列表:

List<WebElement> elementName = driver.FindElements(By.XPath("//a[contains(text(),'Details')]"));

【讨论】:

  • 列表包含 0 个元素,这是不正确的。
  • 添加等待:WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); IWebElement elementName = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//a[contains(text(),'Details')]"));
  • 什么是ExpectedConditions
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 2015-02-14
  • 2015-12-16
  • 2016-02-02
  • 2021-12-25
相关资源
最近更新 更多