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

Используя эти команды, я получаю слово «Hello», напечатанное несколько раз

one=driver.find_elements_by_xpath("any")
for two in one:
    if two.text=='three'
        print('Hello') 
    else:
        print('Bye')

Как мне изменить код так, чтобы, если все элементы == «three» были напечатаны один раз «Hi», иесли есть элемент, который!= "Три", было напечатано один раз "Пока"

Ответы [ 6 ]

0 голосов
/ 27 февраля 2019

Более понятно, если вы используете all() вместо any():

one=driver.find_elements_by_xpath("any")
if all(two.text == 'three' for two in one):
    print('Hello')
else:
    print('Bye')
0 голосов
/ 27 февраля 2019

Это может быть достигнуто различными способами:

Здесь я даю вам два способа сделать это.

1-й и самый простой способ - сохранить счетчик и проверить счетчик.,Это может быть достигнуто, как показано ниже:

counter_three = 0
counter_not_three = 0
for two in one:
    if two.text=='three':
        if counter_three == 0:
            counter_three = counter_three + 1
            print('Hello') 
    else:
        if counter_not_three == 0:
            print('Bye')
            counter_not_three = counter_not_three + 1

2-й способ, как показано ниже:

a = [{"text": "three"},{"text": "three"}, {"text": "three"}, {"text": "three"}, {"text": "two"}]
a_list = set(map(lambda x: x["text"], a))
for x in a_set:
    if x == 'three':
        print('Hello')
    else:
        print('Bye')
0 голосов
/ 27 февраля 2019

Извините, я не поняла ваш вопрос раньше, это должно сделать:

 one=driver.find_elements_by_xpath("any")
    i = 0
    for two in one:
        if two.text=='three' 
            i = i + 1
            if and i==len(one)
                 print('Hello') 
        else:
            print('Bye')
            break
0 голосов
/ 27 февраля 2019

Вы можете использовать any()

one = driver.find_elements_by_xpath("any")
if any(two.text != 'three' for two in one):
    print('Bye')
else:
    print('Hello')
0 голосов
/ 27 февраля 2019

Вы могли бы сделать one набор и сравнить результаты

one = driver.find_elements_by_xpath("any")
two = {_.text for _ in one}
if len(two) == 1 and two[0] == 'three':
    print('hi')
else:
    print('bye')

Эффективно это берет ('three', 'three', 'three') и превращает его в {'three'} или принимает ('three', 'three', 'not three') и превращает его в {'three', 'not three'}.Затем вы видите, если это только один элемент, и этот элемент 'three' или нет.

Надеюсь, если это объяснение понадобилось, оно помогло.

0 голосов
/ 27 февраля 2019

Функция может сделать это:

one=driver.find_elements_by_xpath("any")
def helloBye(one):
    for two in one:
        if two.text!="three":
            print("Bye")
            return
    print("Hello")
    return
helloBye(one)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...