Как найти элементы по их внутреннему тексту в Selenium - Python - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь найти и щелкнуть кнопки, используя их «innerText» (в моем случае: «Sprint 1», «Sprint 2» и «Sprint 3»)

Вот часть моего html:

<div class="show dropdown">
    <div class="dropdown-menu show">
        <a href="#" class="dropdown-item active" role="button">
            <div class="period-title">
                <span><span class="badge badge-success">active</span><span class="abc-name">Sprint 1</span></span>
            </div>
        </a>
        <a href="#" class="dropdown-item" role="button">
            <div class="period-title">
                <span><span class="badge badge-info">future</span><span class="abc-name">Sprint 2</span></span>
            </div>
        </a>
        <a href="#" class="dropdown-item" role="button">
            <div class="period-title">
                <span><span class="badge badge-info">future</span><span class="abc-name">Sprint 3</span></span>
            </div>
        </a>
    </div>
</div>

, и это одна из моих неудачных попыток: (сообщение об ошибке: «... не является допустимым выражением XPath)

driver.find_elements_by_xpath("//span[contains(text(), 'Sprint 1'")

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Чтобы щелкнуть элемент Dynami c, вам нужно вызвать WebDriverWait () и дождаться element_to_be_clickable () и следующего xpath.

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//span[text()='Sprint 1']"))).click()

Вам необходимо импортировать следующие библиотеки.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
1 голос
/ 06 августа 2020

Не удалось из-за синтаксической ошибки.

Попробуйте следующее:

//span[contains(.,'Sprint 1')]

ИЛИ

//span/text()[contains(.,'Sprint 1')]

Спасибо.

...