Проверьте арифметические значения найденных элементов - PullRequest
0 голосов
/ 18 марта 2019

Используя команду:

AnyNumber = driver.find_elements_by_xpath('//*[starts-with(@id, "popover-")]')
for list_AnyNumber in AnyNumber:
    print(int(list_AnyNumber.text))

Я получаю 10 чисел (например, 10, 20, 30 и т. Д.). Как проверить, что каждый следующий элемент больше предыдущего?

Ответы [ 6 ]

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

Я нашел решение, которое появилось на другом форуме

AnyNumber = driver.find_elements_by_xpath('//*[starts-with(@id, "popover-")]')
buffer = 0
for AnyNumbers in AnyNumber:
    if int(AnyNumbers) > buffer:
        print('more than')
    elif int(AnyNumbers) < buffer:
        print('less than')
    else:
        print('is')
    buffer = int(AnyNumbers)
0 голосов
/ 19 марта 2019

Самый простой способ - отсортировать список и сравнить с исходным списком. Они должны совпадать, если числа увеличиваются, как и ожидалось.

Первое, что вам нужно сделать, это преобразовать список строк в список int, затем отсортировать, затем сравнить.

Простой пример,

list = ['10', '20', '30', '40', '50']
int_list = [int(i) for i in list]
print(int_list == sorted(int_list))

Будет напечатано True, поскольку исходный список отсортирован.

Чтобы увидеть неудачный случай,

list = ['50', '20', '30', '10', '40']
int_list = [int(i) for i in list]
print(int_list == sorted(int_list))

Ваш код будет выглядеть примерно так:

list = driver.find_elements_by_xpath('//*[starts-with(@id, "popover-")]')
int_list = [int(i.text) for i in list]
print(int_list == sorted(int_list))
0 голосов
/ 18 марта 2019
AnyNumber=['14','22','33', '41', '55']
x=len(AnyNumber)
for index, list_AnyNumber in enumerate(AnyNumber):
    if index < (x-1):
        if int(AnyNumber[index + 1]) > int(AnyNumber[index]):
            print(str(AnyNumber[index + 1]) + ">" + str(list_AnyNumber))

Основано на данных пользователей ответ

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

Вот один интересный подход. Скажем, ваш список называется any_number_list. Тогда Вы можете использовать следующий синтаксис:

sequence = [y - x for x, y in zip(any_number_list[:-1], any_number_list[1:]) if y - x < 0] 
if not sequence:
    print("Each element is greater than the previous one")

Вы упаковываете два массива, используя zip, и перебираете их, добавляя разницу к новому массиву с именем sequence, если разница меньше 0. Если в конце этот массив содержит любое число, то это не однозначно последовательность.

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

Возьмите счетчик длины и используйте для цикла и, если условия. Надеюсь, это поможет.

AnyNumber = driver.find_elements_by_xpath('//*[starts-with(@id, "popover-")]')
ncount=len(AnyNumber)
for l in range(ncount-1):
    if int(AnyNumber[l+1].text) > int(AnyNumber[l].text):
     print(int(AnyNumber[l+1].text))
0 голосов
/ 18 марта 2019
AnyNumber = driver.find_elements_by_xpath('//*[starts-with(@id, "popover-")]')
for index, list_AnyNumber in enumerate(AnyNumber):
    if index > 0:
        print(int(AnyNumber[index].text) > int(AnyNumber[index-1],text))

Или вы можете изменить цикл foreach на for in range()

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