проверяя слово в тексте и печатая () команду один раз - PullRequest
1 голос
/ 20 марта 2019

Используя эти команды, я получаю три предложения.

AnyText = driver.find_elements_by_xpath('AnyXpath')
    for AnyText1 in AnyText:
    print(AnyText1.text)

В консоли я получаю что-то вроде этого:

** 1) Здравствуйте, меня зовут Джон

** 2) Привет, меня зовут Марк

** 3) Привет, меня зовут Алекс ..

Как проверить, что во всех трех предложениях есть слово «имя», и напечатать(«ОК»), если слово входит в предложение (элемент), и печатать («ОШИБКА»), если нет.Я пытаюсь:

    AnyText = driver.find_elements_by_xpath('AnyXpath')
    Text = 'name'
    if all(Text in AnyText1 for two in AnyText1):
        print('OK')
    else:
        print('ERROR')

, но этот метод проверяет только первый элемент (первое предложение).Я также пытался что-то вроде этого

AnyText = driver.find_elements_by_xpath('AnyXpath')
Text = 'name'
for AnyText1 in AnyText:
    if all(Text in AnyText1):
        print('OK')
    else:
        print('ERROR')

, но я получаю много раз ОК или ОШИБКА

UPD: С вопросом по тексту я разобрался с вашей помощью,Теперь я хочу понять цифры)

У меня есть цикл, который более или менее проверяет следующий номер.Если больше, пишет ERROR, если меньше, пишет OK

sort_month=driver.find_element_by_xpath('/html/body/div[6]/div[2]/div/div[1]/div/div[13]/table/thead/tr/th[3]/a[4]').click()

month2=driver.find_element_by_xpath('//*[starts-with(@id, "td_")]/td[3]/span[3]')
month2=month2.text.replace("'", "").replace(" ", "")
buffer = 0
if int(month2) > buffer:
    print()
buffer = int(month2)
month1=driver.find_elements_by_xpath('//*[starts-with(@id, "td_")]/td[3]/span[3]')
for spisok_month in month1:
    spisok_month = spisok_month.text.replace("'", "").replace(" ", "")
    if int(spisok_month) > buffer:
        print('ERROR')
    elif int(spisok_month) < buffer:
        print('OK')
    else:
        print('==')
    buffer = int(spisok_month)

здесь я также хотел бы видеть OK или ERROR только один раз.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Кажется, проблема в короткой форме для цикла в вашем первом фрагменте.В основном это должно выглядеть следующим образом:

AnyText = driver.find_elements_by_xpath('AnyXpath')
Text = 'name'
if all(Text in AnyText1.text for AnyText1 in AnyText):
    print('OK')
else:
    print('ERROR')

ОБНОВЛЕНИЕ:

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

outcome = 'OK'
for spisok_month in month1:
    spisok_month = spisok_month.text.replace("'", "").replace(" ", "")
    if int(spisok_month) > buffer:
        outcome = 'ERROR'
    elif outcome == 'OK' and int(spisok_month) == buffer:
        outcome = '=='
    buffer = int(spisok_month)
print(outcome)

Примечание. Обновление - это почти отдельный вопрос.это означает, что либо ваш первый вопрос не соответствует реальной проблеме, либо вы должны задать его в отдельном сообщении

0 голосов
/ 20 марта 2019

В вашем коде AnyText1 - это WebElement, а не текст.Вы должны использовать AnyText1.text для получения текста, и тогда он будет работать:

AnyText = driver.find_elements_by_xpath('AnyXpath')
Text = 'name'

# AnyText1 is a WebElement and you should get text
if all(Text in AnyText1.text for AnyText1 in AnyText):
    print('OK')
else:
    print('ERROR')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...