#python #selenium
Вопрос:
Есть список с 10 комментариями. У каждого комментария есть название. В заголовке есть один xpath, а в комментарии-другой.
Я хочу проверить, существует ли в списке заголовок «Еженедельный отчет», а затем получить текст из соответствующего комментария, например, заголовок 1 соответствует комментарию 1, заголовок 2 соответствует комментарию 2 и так далее. Как я могу это закодировать? Я застрял. Я успешно могу проверить, содержит ли список заголовок с еженедельным отчетом, но не знаю, как его использовать, чтобы получить соответствующий комментарий. Пожалуйста, помогите.
xpathCommentTitleList = [xpathCommentTitle1, xpathCommentTitle2, xpathCommentTitle3, xpathCommentTitle4, xpathCommentTitle5, xpathCommentTitle6, xpathCommentTitle7, xpathCommentTitle8, xpathCommentTitle9, xpathCommentTitle10]
xpathCommentList = [xpathComment1, xpathComment2, xpathComment3, xpathComment4, xpathComment5, xpathComment6, xpathComment7, xpathComment8, xpathComment9, xpathComment10]
patternForFindingWeekTitle = r"Weekly Report"
for xpath in xpathCommentTitleList: # loop through elements
element = WebDriverWait(driver, 40).until(EC.presence_of_all_elements_located((By.XPATH, xpath)))
element = driver.find_element_by_xpath(xpath)
match2 = re.search(patternForFindingWeekTitle, element.text)
if match2:
break
else :
print("Could not find any week title")
Комментарии:
1. Пожалуйста, поделитесь html-кодом?
Ответ №1:
Вы можете сделать это следующим образом:
как только страница будет загружена, получите все заголовки комментариев и тела комментариев.
Допустим, локатор заголовка комментария есть comment_title
, а локатор тела комментария есть comment body
.
titles = driver.find_elements_by_xpath(comment_title)
comments = driver.find_elements_by_xpath(comment_body)
for index, title in enumerate(titles, start=1):
title_text = title.text
if('Weekly Report' in title_text):
return comments[index].text
Комментарии:
1. Я получаю
AttributeError: 'str' object has no attribute 'text'
, когда пытаюсь это сделать. Это потому, что иногда заголовок/комментарий «Еженедельный отчет» отсутствует на странице. Только у некоторых пользователей есть заголовок и комментарий» Еженедельный отчет».2. Я так не думаю. Вы точно скопировали этот код? Кроме того, я предполагаю, что ошибка появляется для
title_text = title.text
строки. Да?