суббота, 16 января 2021 г.

Операции с LIST (Список)

 dir (list)


 |  list(iterable=(), /) - Имеет возможность прохода по всем элементам списка.

 |  

 |  Built-in mutable sequence. - Встроенный в Python тип данных - последовательность, которая может быть изменена.

 |  

 |  Methods defined here: (Методы, которые можно использовать со СПИСКОМ)

 |  

 |  __add__(self, value, /)

 |      Return self+value - Добавляет элемент или список элементов в конец существующего списка.

- Пример

list = [445, 1, 928, 435.3, 0, 3, 1]
new_list = list.__add__([222, 'def', 4444])
print(new_list)
- Результат
[445, 1, 928, 435.3, 0, 3, 1, 222, 'def', 4444]

 |  

 |  __contains__(self, key, /)

 |      Return key in self. - Если элемент (key) обнаружен в списке, то возвращает True, если нет - то False.

- Привет

list = [445, 1, 928, 435.3, 0, 3, 1]
if_contains_element = list.__contains__(1)
print(if_contains_element)
- Результат 
True

 |  

 |  __delitem__(self, key, /)

 |      Delete self[key]. - Удаляет элемент по указанному индексу (key)

- Пример

list = [445, 1, 928, 435.3, 0, 3, 1]
list.__delitem__(3)
print(list)
- Результат
[445, 1, 928, 0, 3, 1]

 |  

 |  __eq__(self, value, /)

 |      Return self==value - Проверяет список value является ли идентичным данному списку. Если списки одинаковы (одинаковым должен быть и порядок) - то возвращает значение True,  если списки не идентичны, то возвращает False.

- Пример 1

list = [445, 0, 928, 435.3, 1, 3, 1]
are_lists_equal = list.__eq__([445, 0, 928, 435.3, 1, 3, 1])
print(are_lists_equal)
- Результат
True
- Пример 2
list = [445, 0, 928, 435.3, 1, 3, 1]
are_lists_equal = list.__eq__([1])
print(are_lists_equal)
- Результат
False

 |  

 |  __ge__(self, value, /)

 |      Return self>=value.

 |  

 |  __getattribute__(self, name, /)

 |      Return getattr(self, name).

 |  

 |  __getitem__(...)

 |      x.__getitem__(y) <==> x[y]

 |  

 |  __gt__(self, value, /)

 |      Return self>value.

 |  

 |  __iadd__(self, value, /)

 |      Implement self+=value.

 |  

 |  __imul__(self, value, /)

 |      Implement self*=value.

 |  

 |  __init__(self, /, *args, **kwargs)

 |      Initialize self.  See help(type(self)) for accurate signature.

 |  

 |  __iter__(self, /)

 |      Implement iter(self).

 |  

 |  __le__(self, value, /)

 |      Return self<=value.


 |  

 |  __len__(self, /)

 |      Return len(self) - Возвращает количество элементов в списке

- Пример

list = [445, 0, 928, 435.3, 1, 3]
length = list.__len__()
print(length)
- Результат
6

 |  

 |  __lt__(self, value, /)

 |      Return self<value.


 |  

 |  __mul__(self, value, /)

 |      Return self*value. - Создает новый список, который включает в себя старый список столько раз, сколько указано в value - по сути умножает список на value

-  Пример

list = [445, 0, 928, 435.3, 1, 3]
new_list = list.__mul__(2)
print(new_list)
- Результат
[445, 0, 928, 435.3, 1, 3, 445, 0, 928, 435.3, 1, 3]

 |  

 |  __ne__(self, value, /)

 |      Return self!=value. - Возвращает True, если список value не равен данному списку, возвращает False - если списки одинаковые

- Пример 1

list = [445, 0, 928, 435.3, 1, 3]
new_list = list.__ne__([445, 0, 928, 435.3, 1, 3])
print(new_list)
- Результат
False

- Пример 2

list = [445, 0, 928, 435.3, 1, 3]
new_list = list.__ne__(["egwg", 1, 333])
print(new_list)
- Результат
True

 |  

 |  __repr__(self, /)

 |      Return repr(self).

 |  

 |  __reversed__(self, /)

 |      Return a reverse iterator over the list.

 |  

 |  __rmul__(self, value, /)

 |      Return value*self.

 |  

 |  __setitem__(self, key, value, /)

 |      Set self[key] to value. - Заменяет элемент с индексом key на значение value.

- Пример

list = [445, 0, 928, 435.3, 1, 3]
list.__setitem__(2, "frgj")
print(list)
-Результат
[445, 0, 'frgj', 435.3, 1, 3]


 |  

 |  __sizeof__(self, /)

 |      Return the size of the list in memory, in bytes - Возвращает размер списка с байтах.

- Пример

list = [445, 0, 928, 435.3, 1, 3]
size = list.__sizeof__()
print(size)
- Результат
88

 |  

 |  append(self, object, /)

 |      Append object to the end of the list (Добавляет новый элемент в конец списка). 

- Пример:

list = [1, 443, 928, 435.3]
list.append(13)
print(list)
- Результат:
[1, 443, 928, 435.3, 13]

 |  

 |  clear(self, /)

 |      Remove all items from list (Очищает список).

- Пример:

list = [1, 443, 928, 435.3]
list.clear()
print(list)
- Результат:
[] - пустой список

 |  

 |  copy(self, /)

 |      Return a shallow copy of the list.

 |  


 |  count(self, value, /)

 |      Return number of occurrences of value (Считает сколько раз определенный элемент встерчается в последовательности).

- Пример:

list = [1, 443, 928, 435.3, 1, 324, 4, 1]
number_occurancies = list.count(1)
print(number_occurancies)
- Результат:
3

 |  

 |  extend(self, iterable, /)

 |      Extend list by appending elements from the iterable (Добавляет в текущий список элементы из списка iterable.

- Пример:

list = [1, 443, 928, 435.3, 0]
list.extend([4, 22])
print(list)
- Результат:
[1, 443, 928, 435.3, 0, 4, 22]

 |  

 |  index(self, value, start=0, stop=9223372036854775807, /)

 |      Return first index of value. -  Ищет элемент value и выдает индекс первого найденного элемента.
Если в скобках указано только одно значение, то ищет это значение по всему списку.

 |      Raises ValueError if the value is not present. - Возвращает сообщение об ошибке, что элемент не найден.

- Пример:

ValueError: 42357 is not in list


- Пример 1:

list = [1, 443, 928, 435.3, 0, 3, 1, 0 , 46, 24]
first_index = list.index(1)
print(first_index)
- Результат:
0 - Так как элементы списка считаются с нуля (то есть первый элемент имеет индекс 0, второй - 1, третий - 2 и так далее).

Если в скобках указано 2 или 3 элемент: первый элемент (value) - это искомое значение, второй (start) - индекс с которого
 надо начать поиск, третий (stop) - последний элемент в поиске)
При этом начальный элемент (start) включается в поиск, а последний (stop) - нет.

- Пример 2:

list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 46, 24]
first_index = list.index(1, 1, 7)
print(first_index)
- Результат:
1 - Единица имеет индекс 1 в списке, поиск с первого элемента (включительно) до седьмого элемента (не включительно).

 |  

 |  insert(self, index, object, /)

 |      Insert object before index. - Добавляет в список элемент object перед указанным индексом.

- Пример

list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 46, 24]
list.insert(1, 4857)
print(list)
- Результат
[445, 4857, 1, 928, 435.3, 0, 3, 1, 0, 46, 24]

 |  

 |  pop(self, index=-1, /)

 |      Remove and return item at index (default last). - Удаляет элемент из списка по указанному индексу.

 |      Raises IndexError if list is empty or index is out of range. - Отображает ошибку, если список пустой или не содержит запрашиваемый индекс.

- Пример 2

list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 46, 24]
list.pop(2)
print(list)
- Результат
[445, 1, 435.3, 0, 3, 1, 0, 46, 24]

Возвращает элемент по индексу. Но при этом элемент из списка удаляется
- Пример 2
list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 46, 24]
element = list.pop(2)
print(element)
print(list)
- Результат
928
[445, 1, 435.3, 0, 3, 1, 0, 46, 24]

 |  

 |  remove(self, value, /)

 |      Remove first occurrence of value. - Удаляет первый элемент, который попадется в списке с указнным значением (value)

 |      Raises ValueError if the value is not present. - Выдает ошибку, если элемента нет в списке

- Пример

list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 3, 46, 24]
list.remove(3)
print(list)
Результат
[445, 1, 928, 435.3, 0, 1, 0, 3, 46, 24]

 |  

 |  reverse(self, /)

 |      Reverse *IN PLACE*. - Переворачивает список - в итоге список начинается с последнего элемента и заканчивается первым.

- Пример

list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 3, 46, 24]
list.reverse()
print(list)
- Результат
[24, 46, 3, 0, 1, 3, 0, 435.3, 928, 1, 445]

 |  

 |  sort(self, /, *, key=None, reverse=False)

 |      Stable sort *IN PLACE* - Сортирует список  - по умолчанию (если никакие дополнительные параметры не указаны) от меньшего элемента к большему (для числовых значений)

- Пример 1

list = [445, 1, 928, 435.3, 0, 3, 1, 0 , 3, 46, 24]
list.sort()
print(list)
- Результат
[0, 0, 1, 1, 3, 3, 24, 46, 435.3, 445, 928]

 |  

 |  ----------------------------------------------------------------------

 |  Static methods defined here:

 |  

 |  __new__(*args, **kwargs) from builtins.type

 |      Create and return a new object.  See help(type) for accurate signature.

 |  


среда, 6 января 2021 г.

Получить имя скачиваемого файла на Mac и Windows (если это имя не содержится в ссылке для скачивания)

 Код в файле теста:


@pytest.mark.skipif(pytest.mark._config.getoption('os') == 'win', 
                    reason='This test is for Mac only')
def test_correct_app_version_should_be_downloaded_on_mac(driver):
page.open(driver)
page.click_download_button(driver)
assert page.is_downloaded_app_version_correct(driver, TestData.app_for_mac_format), \
"Downloaded App has incorrect for Mac format"


@pytest.mark.skipif(pytest.mark._config.getoption('os') == 'mac', 
reason='This test is for Windows only')
def test_correct_app_version_should_be_downloaded_on_windows(driver_win_chrome):
page.open(driver_win_chrome)
page.click_download_button(driver_win_chrome)
assert page.is_downloaded_app_version_correct(
       driver_win_chrome, TestData.sa_app_for_win_format), \
"Downloaded App has incorrect for Windows format"


Код в Page:
@allure.step("Check if downloaded App version is correct.")
def is_downloaded_app_version_correct(driver, expected_format):
downloaded_file_name = _get_downloaded_filename(driver, 180)
print(downloaded_file_name)
return expected_format in downloaded_file_name

def _get_downloaded_filename(driver, waitTime):
driver.execute_script("window.open()")
driver.switch_to.window(driver.window_handles[-1])
driver.get('chrome://downloads')
endTime = time.time()+waitTime
while True:
try:
return driver.execute_script(
"return document.querySelector('downloads-manager').shadowRoot.querySelector"
"('#downloadsList downloads-item').shadowRoot.querySelector"
"('div#content #file-link').text")
except:
pass
time.sleep(1)
if time.time() > endTime:
break

Самые полезные ФУНКЦИИ Пайтона

 1)  PRINT - выводит на печать переменную, указанную в скобках print (average)   2)  LEN - посчитать количество элементов в списке student...