首页 > 解决方案 > 如何在带有 C# 的角度网站上使用 selenium 验证文本是否为粗体

问题描述

我正在尝试在自由文本区域内验证文本是否为粗体。当我选择元素时,我无法验证文本部分。

我已经尝试根据重复链接建议使用 .getCSSValues ,但它不起作用,因为它没有获得该自由文本区域的“文本”,这是一个字符串。自由文本区域是一个元素。

IWebElement isBold = _driver.FindElement(By.TagName("p"));
isBold.GetCssValue("font-weight");

但无论文本是否为粗体,字体粗细都会返回“400”。

HTML是

<div class="fr-element fr-view" dir="auto" contenteditable="true" aria-disabled="false" spellcheck="true"><p style=""><strong>TEXT</strong></p></div>

我希望所选文本在粗体时为“700”。

标签: c#cssangularseleniumwebdriverwait

解决方案


看来你很接近了。您需要考虑以下事实:

  • 由于该元素是Angular元素,因此要定位该元素,您必须诱导WebDriverWaitElementIsVisible()
  • 接下来就可以使用GetCssValue()方法来提取font-weight
  • 您可以使用以下任一定位器策略

    • cssSelector

      new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.CssSelector("div.fr-element.fr-view>p>strong"))).GetCssValue("font-weight");
      
    • xpath

      new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementIsVisible(By.XPath("//div[@class='fr-element fr-view']/p/strong[text()='TEXT']"))).GetCssValue("font-weight");
      

推荐阅读