Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Python для новичков »  Not supported proxy scheme socks4 » Июль 1, 2019 17:19:17

написал бота на питон3, работает с проксями
локально на убунте запустился
залил на сервер c убунтой- пишет ошибку
requests.packages.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme socks4
пробовал установить через пип
pip3.5 install requests socks
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.9.1)
WARNING: requests 2.9.1 does not provide the extra ‘socks’
pip3 install requests socks
Traceback (most recent call last):
File “/usr/bin/pip3”, line 9, in <module>
from pip import main
ImportError: cannot import name ‘main’

виндовс7 и питон 3.7 ругается что нету модуля requests

Python для новичков » Робота с каталогами » Июль 1, 2019 11:10:47

Здравствуйте, есть такая задача есть архив в котором лежат 3-4 папки. В папке есть файл. Есть код который считывает файл и записывает в базу. Как мне правильно сделать что бы заходило в папку считывало файл. И так с остальными.

Django » Как обменяться csrf-токеном с фронтендом? » Июнь 27, 2019 21:34:17

подскажите пожалуйста как djngo и frontend обмениваются csrf-токеном

Есть фронтенд на angular и бекенд на django2.2.2. Они находятся на разных серверах. Фронтенд состоит из одной странички, на которой есть форма регистрации. Я хотел бы её подписать csrf-токеном, отправить и проверить наличие токена на стороне сервера.
Вот что я пытался сделать чтобы реализовать эту идею.
view:
 from django.shortcuts import render
from django.contrib.auth.models import User
from django.http import JsonResponse
from django.views.decorators.csrf import ensure_csrf_cookie
@ensure_csrf_cookie
def get_csrf(request):
    response = JsonResponse([{"cookie_set": True}], safe=False)
    return response
def registration(request):
    # some payload
    response = JsonResponse([{"registration_successful": True}], safe=False)
    return response

На фронтенде я при загрузке странички с формой отправляю запрос, на который отвечает контролер get_csrf(). Тут по моему понимаю на фронт должен вернуться csrf-токен в виде куки.

далее при отправке формы(то есть когда пользователь кликает по кнопке submit) я мог бы извлечь куку с клиента и отправить её вместе с остальными POST-параметрами в контроллер registration(). В случае её отсутствия контроллер просто не обработает данные формы.

Проблема в том, что кука не устанавливается после первой загрузки странички на фронте. И я не понимаю почему, ведь если в адресную строку браузер вбить:
127.0.0.1:8000/app_auth/get_csrf

, то кука устанавливается.

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

Network » SNMP OID » Июнь 25, 2019 08:26:19

Доброго дня!

Возможно у кого-то есть пример скрипта под zabbix, где идет сравнение получаемых значение от нескольких OID, и вывода наименьшего значения ?

Python для новичков » Программа вывода друзей из ВК с ДР + временем до ДР » Июнь 23, 2019 10:09:08

И снова опять я с кракозябрами!
Сейчас написал простенькую Программку основанная на API VK (без модуля vk)
Она выводит всех Ваших друзей в вк с ДР и временем сколько осталось в виде простенькой таблицы на экране

Главное вставьте туда свой токен и должно заработать (Но это не точно)

Конечно надо было бы сделать по человечески: отсортировать по убыванию, экспортировать, но может потом.

Жду Ваших наставлений и комментариев!

Центр помощи » "Помогите пожалуйста решить задачу на pythone" » Июнь 20, 2019 12:37:41

Ребят, помогите пожалуйста решить 2 задание “Программная реализация шифра Цезаря (вариант 2)” методом перестановки.
Буду очень признателен :3.
Файл во вложении прикрепил))

Python для новичков » Парсер сайта » Июнь 19, 2019 15:12:42

Добрый день.

Прошу помощи со скриптом. В браузере если смотреть код страницы combinedURL, то блок soup.find('a',{'class' : ‘elevatezoom-gallery’}) я вижу, а скрипт упорно уходит на другую страницу и не видит его. Задача просто сохранить картинки с номерами из parts.txt

Решено с помощью параметров к запросу get

Центр помощи » классы в питоне » Июнь 16, 2019 17:21:05

Всем привет. есть вот такая задачка
нужно написать класс Date, описывающий дату. У него должно быть три поля:
год - число от 0 до 9999
месяц - число от 1 до 12
день - число от 1 до 31
И два метода:
конструктор
метод для вывода даты в формате %Y/%m/%d
метод валидации, который проверяет, что введённые год, месяц и день попадают в указанные интервалы и возвращает True или False. Используйте этот метод в конструкторе, выводите сообщение, если дата неправильная и приравнивайте все её поля к 0. Для простоты не учитывайте разницу в количестве дней в разных месяцах.

нужно наследовать от класса Date класс DateTime, который хранит дату и время. У него должны быть дополнительные поля:
часы (в 24 часовом формате) - число от 0 до 23
минуты - число от 0 до 59
секунды - число от 0 до 59
Указания:
Переопределите конструктор. Теперь он должен принимать параметры и для даты, и для времени. Используйте super(), чтобы инициализировать суперкласс (класс Date).
Переопределите метод для вывода даты на экран. В классе DateTime он должен сначала выводить дату, а потом время в формате “%H:%M:%S” (“ЧЧ:ММ:СС”). По возможности используйте super() (можно вывести время на следующей строке).
Переопределите метод валидации, чтобы он проверял, что введённое время корректно. Используйте super(), чтобы валидировать дату.

Python для новичков » ООП в питоне » Июнь 13, 2019 12:01:13

всем добрый день. нужно модифицировать код с помощью OOП. второй день ломаю голову вот что получилось у меня(точнее не получилось)))) ниже исходный код и схема по которой нужно сделать.помогите кто может)
 movies = []
class Rating():
    def __init__(self,ratings):
        self.ratings = ratings
    def get_avg_rating(self,average):
        self.average = get_avg_rating_as_float()
        if self.average > 0:
            return str(self.average)
        return 'Без рейтинга'
    
class Movie():
  
    def __init__(self,ratings,rating):
       self.rating = rating
       self.ratings = []
    def get_avg_rating_as_float(self):
        if len(item.rating) > 0:
            self.average = sum(item.rating.values()) / len(item.rating)        
            return average
        return 0   
    
    # def rate(self):
        
    
class MovieList():
    
    def __init__(self):
        self.movies = []
    def list(self):
        self.movies.sort(key=lambda movie: movie.name)
        for item in self.movies:
            self.average = get_avg_rating()
            print(f"{item.name:<25} {average:>14}")
    def list_average(self):
        self.movies = sorted(self.movies, key=self.get_avg_rating_as_float, reverse=True)
        for item in self.movies:
            average = get_avg_rating(item)
            print(f"{item.name:<25} {average:>14}")
    def find(self, name=None):
        
        name = input("Введите название фильма:\n> ")
        for item in self.movies:
            if item == name:
                return item
        return None
    def show(self):
        movie = self.find()
        if movie:
            print(f"{movie.name:^35}")
            for key, value in movie.items():
                print(f"{key:<20} {value:>14.1f}")
            average = get_avg_rating(movie)
            print(f"{'Средний рейтинг':<20} {average:>14}")
        else:
            print("Фильм не найден")
    def add(self):
        name = input("Введите название фильма:\n> ")
        movie = name
        if  movie == name:
            new_movie = MovieList()
            self.movies.append(new_movie)
            print("Фильм добавлен!")
        else:
            print("Такой фильм уже есть.")
    def rate(self):
        movie = self.find()
        if movie in self.movies:
            name = input("Введите ваше имя:\n> ")
        rating = float(input("Введите рейтинг:\n> "))
        if rating == 0:
                if movie.ratings.get(name):
                    movie.ratings.pop(name)
        elif rating < 1 or rating > 10:
                print("Рейтинг должен быть от 1 до 10!")
        else:
             movie[name] = rating
        
    def delete(self):
        movie = self.find()
        if movie:
            self.movies.remove(movie)
            print("Фильм удалён")
        else:
            print('Фильм не найден')
# def save(movies):
#     with open('movies.txt', 'w') as m:
#         for movie in movies:
#             ratings = []
#             for name in movie['ratings']:                
#                 ratings_str = f"{name},{movie['ratings'][name]}"
#                 ratings.append(ratings_str)
#             all_ratings_str = ';'.join(ratings)            
#             movie_str = f'{movie["name"]}|{all_ratings_str}\n'
#             m.write(movie_str)
# def load(movies):    
#     with open('movies.txt', 'r') as m:
#         for line in m:
#             name, all_ratings_str = line.strip().split('|')
            
#             print(name, all_ratings_str)
#             if all_ratings_str != '':
#                 ratings_strings = all_ratings_str.split(';')
#                 ratings = {}
#                 for key in ratings_strings:
#                     user_name, mark = key.split(',')
#                     rating = {
#                         user_name: float(mark)                    
#                     }
#                     ratings.update(rating)        
#             films = {
#                 'name': name,                
#                 'ratings': ratings
#             }            
#             movies.append(films)            
        
    @staticmethod
    
    def show_menu():
       print("""     Введите команду
* list - показать список фильмов
* average - показать список фильмов с сортировкой по оценке
* find - найти фильм
* add  - добавить новый фильм
* rate - добавить рейтикн к фильму
* delete - удалить фильм
* exit - to exit""")
class App():
    def __init__(self):
        self.movie_list = MovieList()
        
    def commands(self,command):    
        if command == 'list':
            self.movie_list.list()
        if command == 'average':
            self.movie_list.list_average()
        elif command == 'find':
            self.movie_list.show()
        elif command == 'add':
            self.movie_list.add()
            # save(movies)
        elif command == 'rate':
            self.movie_list.rate()
            # save(movies)
        elif command == 'del':
            self.movie_list.delete()
            # save(movies)
    
    def run(self):
        print("Добро пожаловать в телефонную книгу")
        MovieList.show_menu()
        
        while True:
            command = input("\nВведите команду: ")
            if command == 'exit':
                print("Выход")
                break
            else:
                self.commands(command) 
app = App()
app.run()
исходный код который модифицировал
 movies = []
def save(movies):
    with open('movies.txt', 'w') as m:
        for movie in movies:
            ratings = []
            for name in movie['ratings']:                
                ratings_str = f"{name},{movie['ratings'][name]}"
                ratings.append(ratings_str)
            all_ratings_str = ';'.join(ratings)            
            movie_str = f'{movie["name"]}|{all_ratings_str}\n'
            m.write(movie_str)
def load(movies):    
    with open('movies.txt', 'r') as m:
        for line in m:
            name, all_ratings_str = line.strip().split('|')
            
            print(name, all_ratings_str)
            if all_ratings_str != '':
                ratings_strings = all_ratings_str.split(';')
                ratings = {}
                for key in ratings_strings:
                    user_name, mark = key.split(',')
                    rating = {
                        user_name: float(mark)                    
                    }
                    ratings.update(rating)        
            films = {
                'name': name,                
                'ratings': ratings
            }            
            movies.append(films)            
def get_avg_rating(item):
    average = get_avg_rating_as_float(item)
    if average > 0:
        return str(average)
    return 'Без рейтинга'
def get_avg_rating_as_float(item):
    if len(item['ratings']) > 0:
        average = sum(item['ratings'].values()) / len(item['ratings'])        
        return average
    return 0
    
def list(movies):
    movies.sort(key=lambda movie: movie['name'])
    for item in movies:
        average = get_avg_rating(item)
        print(f"{item['name']:<25} {average:>14}")
def list_average(movies):
    movies = sorted(movies, key=get_avg_rating_as_float, reverse=True)
    for item in movies:
        average = get_avg_rating(item)
        print(f"{item['name']:<25} {average:>14}")
def find(movies, name=None):
    if not name:
        name = input("Введите название фильма:\n> ")
    for item in movies:
        if item['name'] == name:
            return item
    return None
def show(movies):
    movie = find(movies)
    if movie:
        print(f"{movie['name']:^35}")
        for key, value in movie['ratings'].items():
            print(f"{key:<20} {value:>14.1f}")
        average = get_avg_rating(movie)
        print(f"{'Средний рейтинг':<20} {average:>14}")
    else:
        print("Фильм не найден")
def add(movies):
    name = input("Введите название фильма:\n> ")
    movie = find(movies, name)
    if not movie:
        new_movie = {'name': name, 'ratings': {}}
        movies.append(new_movie)
        print("Фильм добавлен!")
    else:
        print("Такой фильм уже есть.")
def rate(movies):
    movie = find(movies)
    if movie is not None:
        name = input("Введите ваше имя:\n> ")
        rating = float(input("Введите рейтинг:\n> "))
        if rating == 0:
            if movie['ratings'].get(name):
                movie['ratings'].pop(name)
        elif rating < 1 or rating > 10:
            print("Рейтинг должен быть от 1 до 10!")
        else:
            movie['ratings'][name] = rating
def delete(movies):
    movie = find(movies)
    if movie:
        movies.remove(movie)
        print("Фильм удалён")
    else:
        print('Фильм не найден')
def help():
    print("""     Введите команду
* list - показать список фильмов
* average - показать список фильмов с сортировкой по оценке
* find - найти фильм
* add  - добавить новый фильм
* rate - добавить рейтикн к фильму
* delete - удалить фильм
* exit - to exit""")
def menu():
    help()
    while True:        
        print("\nInput command: ")
        command = input('> ')
        if command == 'list':
            list(movies)
        if command == 'average':
            list_average(movies)
        elif command == 'find':
            show(movies)
        elif command == 'add':
            add(movies)
            save(movies)
        elif command == 'rate':
            rate(movies)
            save(movies)
        elif command == 'delete':
            delete(movies)
            save(movies)
        elif command == 'exit':
            break
        else:
            print("Неизвестная команда")
   
menu()
схема ООП
class Movie():
pass
# name : str
# ratings : из объектов Rating

# Методы:
# вычисление среднего рейтинга
# добавить рейтинг
# вывод на экран


class MovieList():
pass
# movies : list из объектов Movie

# Методы:
# list
# find
# sort
# add
# rate
# delete
# help: статический
# load из файла
# save в файл


class App():
pass
# movie_list: объект MovieList

# Метод
# главный цикл
# обработка команд

Базы данных » Как получать уведомление об изменении в БД MS SQL на python? » Июнь 10, 2019 13:58:09

Приветствую Всех.

Подскажите, пожалуйста, как на python (3.7) получать уведомления об изменении записей/колонок в таблицах БД MS SQL (2017)? Чтобы потом получать эти самые изменения?

Заранее благодарю за помощь!

Python для новичков » Нужна помощь с библиотекой SimpleQIWI » Июнь 8, 2019 17:27:29

Здравствуйте, только начал изучать Python. Поставил джанго на хост и хочу принимать оплату с помощью библиотеки https://github.com/Emberium/SimpleQIWI
там есть код:

Принемаем платежи
from SimpleQIWI import *
from time import sleep

token = “ВАШ ТОКЕН” # https://qiwi.com/api
phone = “ВАШ ТЕЛЕФОН”

api = QApi(token=token, phone=phone)

price = 1 # Минимальное значение при котором счет будет считаться закрытым
comment = api.bill(price) # Создаем счет. Комментарий с которым должен быть платеж генерируется автоматически, но его можно задать # параметром comment. Валютой по умолчанию считаются рубли, но ее можно изменить параметром currency

print(“Переведите %i рублей на счет %s с комментарием ‘%s’” % (price, phone, comment))

api.start() # Начинаем прием платежей

while True:
if api.check(comment): # Проверяем статус
print(“Платёж получен!”)
break

sleep(1)

api.stop() # Останавливаем прием платежей

момент с проверкой статуса я вынес в отдельный mysite/check
. . .
api.start()

if api.check(comment):
tt2=“yes” +“ ”+comment
else:
tt2=“no”+“ ”+comment

api.stop()

def index(request):
return HttpResponse(tt2)

и он всегда возвращает “no”

Подскажите пожалуйста как это можно исправить.

Python проекты » Требуется phyton разработчик со знанием баз данных postgreSQL » Июнь 2, 2019 12:02:20

Необходимо разработать и разместить страницу с двумя модулями:
1. Пузырчатая диаграмма.
Документация по библиотеки для диаграммы (https://www.amcharts.com/docs/v4/).
Пример необходимой диаграммы от разработчиков библиотеки (https://codepen.io/team/amcharts/pen/rvzKLE).

2. Табличный модуль “список наблюдения”. Макет нашего дизайна прикреплен к задаче.

Данные для обоих модулей берем здесь > https://iexcloud.io/docs/api/

Подробности и ТЗ отправлю в личку.

Python для новичков » Не реагирует на русский язык  » Май 31, 2019 18:24:05

Помогите,при открытии файла всё работает,но когда я пытаюсь командой открыть YouTube,то нечего не происходит,но когда я меня язык на англ(т.е Пишу Open Youtube) то всё работает.Как сделать так,чтобы что он реагировал на русский,а не на англ.
Вот код:
import os
import time
import speech_recognition as sr
import pyttsx3
import datetime
import webbrowser
import random
import wikipedia


language='ru'

engine = pyttsx3.init('sapi5')

def speak(audio):
print('AI: ‘ + audio)
engine.say(audio)
engine.runAndWait()

def greetMe():
currentH = int(datetime.datetime.now().hour)
if currentH >= 0 and currentH < 12:
speak(’Доброе утро!')

if currentH >= 12 and currentH < 18:
speak('Добрый день!')

if currentH >= 18 and currentH !=0:
speak('Добрый вечер!')

greetMe()

speak('Я ваш цифровой ассистент Эни!')
speak('Чем я могу помочь?')

def myCommand():

r = sr.Recognizer()
with sr.Microphone() as source:
print(“Слушаю…”)
r.pause_threshold = 1
audio = r.listen(source)
try:
query = r.recognize_google(audio, language='ru-Ru')
print('Пользователь: ‘ + query + ’\n')

except sr.UnknownValueError:
speak('Простите! Я не поняла это! Попробуйте ввести команду!')
query = str(input('Команда: ‘))

return query

if __name__ == ’__main__':

while True:

query = myCommand()
query = query.lower()

if ‘Открой ютуб’ in query:
speak('Хорошо')
webbrowser.open('www.youtube.com')
Заранее спасибо

Python для экспертов » Pandas . Выбор и замена по условию, значения в таблице excel . » Май 30, 2019 15:38:10

Есть два разных excel файла-прайса . В двух файлах есть товар и цена . Названия товаров в двух файлах не много отличаются , но суть та же . Единственные идентичные столбцы это ссылки сайта на товар.

Как можно , используя только PANDAS , найти похожий товар и обновить ему цену из одного прайса в другой ?

Python для новичков » Не открывается окно при нажатии кнопки в tkinter » Май 30, 2019 15:08:34

1.Python 3.7
2. Windows
3. Добрый день! Подскажите, пожалуйста, мне необходимо сделать окно с кнопками, при нажатии на них: графики, окно с информацией.
Проблема с кнопками, в том как указать в них функцию к графику/окну. Не понятно на счет переменных (self, event) и в каком месте писать функции. Сейчас при нажатии ничего не открывается, но и ошибок нет.

Python для новичков » Ошибка pyttsx3 » Май 28, 2019 01:02:05

Пасаны кто поможет нубу? У меня вот ошибочка, только тапком не бейте. Traceback (most recent call last):
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\__init__.py”, line 20, in init
eng = _activeEngines
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\weakref.py”, line 137, in __getitem__
o = self.data()
KeyError: None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py”, line 89, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, ‘Операция недоступна’, None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “test.py”, line 2, in <module>
engine = pyttsx3.init()
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\__init__.py”, line 22, in init
eng = Engine(driverName, debug)
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\engine.py”, line 30, in __init__
self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\driver.py”, line 52, in __init__
self._driver = self._module.buildDriver(weakref.proxy(self))
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py”, line 23, in buildDriver
return SAPI5Driver(proxy)
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyttsx3\drivers\sapi5.py”, line 28, in __init__
self._tts = win32com.client.Dispatch('SAPI.SPVoice')
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\__init__.py”, line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py”, line 114, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File “C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py”, line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147024770, ‘Не найден указанный модуль.’, None, None)

Инструментальные средства разработки » проблемы с pygame » Май 26, 2019 14:30:28

Здравствуйте!
Только начал изучать pygame и наткнулся на очень неприятную ошибку которую никак не могу решить.
буду очень благодарен если поможете
при выполнении после секунд 5 окно наглухо зависает

вот вам код

import pygame
pygame.init()

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (125, 125, 125)
LIGHT_BLUE = (64, 128, 255)
GREEN = (0, 200, 64)
YELLOW = (225, 225, 0)
PINK = (230, 50, 230)

disp = pygame.display.set_mode((600,600))

xpos=300
ypos=300

w=10
h=10

done = False
while done == False:

for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True

while xpos < 400:
pygame.time.wait(500)
pygame.draw.rect(disp,WHITE,(xpos,ypos,w,h))
pygame.display.update()
xpos += 1

Центр помощи » Найдите среднее количество шагов, за которые фишка обойдет все вершины п-угольника. » Май 21, 2019 10:25:35

В одной из вершин правильного п-угольника располагается фишка. На каждом шаге фишку перемещают в одну из соседних вершин с одина- ковыми вероятностями. Найдите среднее количество шагов, за которые фишка обойдет все вершины п-угольника.
Помогите с этой задачей пожалуйста

Центр помощи » Выбор наиболее проходимых маршрутов для расположения сервисного центра » Май 20, 2019 19:48:19

Доброго времени суток. Пишу дипломную работу и появилась необходимость реализовать в python, но к сожалению я в этом вообще не шарю. Суть такая, у меня есть сгенерированные маршруты перемещения абонентов в определенном квадрате города. Необходимо написать код, чтобы потом прогнать эти данные методом k-means и поделить на кластеры, центр которых и будет необходимыми точками. Решил спросить у тех, кто разбирается в этом. Как мне объяснили мне нужны метрики для совокупности точек(сравнения маршрутов), искал в гугле и ничего не нашел. Помогите пожалуйста!

Python для новичков » Google maps + Selenium » Май 20, 2019 03:38:50

Доброго времени суток.
Помогите решить задачу:
целый день искал так и не нашел решение

как с помощью селениума нажать правой кнопкой мыши на маркер в гугл картах
вот ссылка
 https://www.google.com/maps/place/47.9054533,67.5247711
пробовал
 driver = webdriver.Chrome()
actionChains = ActionChains(driver)
driver.get(url)
pointer = driver.find_element_by_xpath('//*[@id="scene"]/div[3]/canvas')
actionChains.context_click(on_element=pointer).perform()

он кликает не на маркер а на центр карты - что не подходит
пробовал с координатами экрана - не получается
 actionChains.move_by_offset(1017, 286).perform()
 actionChains.move_to_element_with_offset(pointer, 500, 100).click().perform()
Спасибо заранее