Утверждение, если текст в элементе содержит определенный частичный текст - PullRequest
0 голосов
/ 05 июня 2019

У меня есть элемент в теге, который имеет заметки о выпуске. Я должен проверить, если он содержит конкретный текст. Я могу извлечь текст, используя следующий код:

WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located((By.XPATH, ManageSoftware.release_notes_xpath))).get_attribute("innerHTML")

Как мне утверждать, если он содержит определенный текст, скажем "abc" Есть ли какая-либо функция, такая как contains () или isPresent (), которую я могу использовать здесь?

Код, над которым я работаю:

<code><div id="dialog" class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; max-height: none; height: 483px;">
<pre> 
Text is here.

1 Ответ

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

Чтобы проверить наличие нужного текста в любом элементе, вам нужно использовать try-catch{} блок, вызывающий WebDriverWait для text_to_be_present_in_element(), и вы можете использовать любой из следующих Стратегий локатора :

  • Использование CSS_SELECTOR:

    try:
        WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "div.ui-dialog-content.ui-widget-content#dialog>pre"), "Text is here"))
        print("Desired text was present")
    except TimeoutException:
        print("Desired text was not present")
    
  • Использование XPATH:

    try:
        WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.XPATH, "//div[@class='ui-dialog-content ui-widget-content' and @id='dialog']/pre"), "Text is here"))
        print("Desired text was present")
    except TimeoutException:
        print("Desired text was not present")
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
...