Как получить текст в селене? - PullRequest
1 голос
/ 01 августа 2020

Я хочу получить текст элемента в селене. сначала я сделал это:

  team1_names = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, ".home span"))
)
for kir in team1_names :
    print(kir.text)

не получилось. поэтому я попробовал это:

team1_name=driver.find_elements_by_css_selector('.home span')
    print(team1_name.getText())

, поэтому team1_name.text тоже не работает. так что с этим не так?

1 Ответ

0 голосов
/ 01 августа 2020

Здесь вам нужно позаботиться о нескольких вещах:

  • availability_of_element_located () - это ожидание для проверки наличия элемента в DOM страницы. Это не обязательно означает, что элемент виден.
  • Кроме того, availability_of_element_located () возвращает WebElement , а не список. Следовательно, повторение через for не будет работать.

Решение

В качестве решения необходимо вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать любую из следующих стратегий локатора :

  • Использование CSS_SELECTOR и текст атрибут:

    print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".home span"))).text)
    
  • Использование XPATH и get_attribute():

    print(WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='home']//span"))).get_attribute("innerHTML"))
    
  • Примечание : вам необходимо добавить следующий импорт:

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

Вы можете найти соответствующее обсуждение в Как получить текст WebElement с помощью Selenium - Python

Outro

Ссылка на полезную документацию:

...