Как я могу проверить, что текст выделен жирным шрифтом, используя селен на угловом веб-сайте с C # - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь проверить, выделен ли текст жирным шрифтом или нет, в области свободного текста. Когда я выбираю элемент, я не могу проверить текстовую часть.

Я пытался использовать .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", когда он выделен жирным шрифтом.

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Кажется, вы были близки. Вам необходимо учитывать следующие факты:

  • Поскольку элемент является элементом Angular , чтобы найти элемент, вы должны вызвать WebDriverWait для ElementIsVisible()
  • Далее вы можете использовать метод 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");
      
1 голос
/ 19 июня 2019

strong означает НЕ означает, что ваш текст выделен жирным шрифтом.

Это означает, что ваш элемент должен быть подчеркнут, чтобы его было ясно видно из остальной части абзаца.

Тот факт, что он выделен жирным шрифтом, связан с тем, что ваш браузер считает, что сильные элементы должны быть выделены жирным шрифтом. Я не знаю, как Selenium работает под капотом, но если у вас браузер без головы, он не будет отображать стили, поэтому не сделает его жирным шрифтом (и это только один конкретный случай, но их гораздо больше)

То же самое относится к любому элементу HTML : они служат структурной цели, а не стилизации:
HTML = структура, CSS = стиль.

Подумайте, чтобы все ваши сильные элементы были выделены жирным шрифтом через

strong {
  font-weight: 700;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...