Как получить координаты изображения в Сикули?

У меня есть этот графический интерфейс в нашем проекте (пожалуйста, имейте в виду мою иллюстрацию, мне не разрешено делать скриншот на работе)

----------------------------------------------
    (1)     Header                            |
----------------------------------------------|
             (2)      Files             | (3) | Drop-down button (Options)
----------------------------------------|-----|          
                                        |     |
----------------------------------------|-----|
                                        |     |
----------------------------------------|-----|
                                        |     |
-----------------------------------------------

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

find_filetype = find.imagedict(filetypeicon.png) #(2) filetype

freg = find_filetype.right()

if freg.exists(drop-down.png):                   #(3) drop-down icon
    freg.click(drop-down.png)

Теперь после нажатия (3) появится выпадающее меню с 4 пунктами действия. Так, например, если я нажму (3a): из (3b - 3d) будет отображаться ниже как минимум 2-3 выпадающих элемента.

----------------------------------------------
            Header                            |           
----------------------------------------------|
                                        | (3a)|
----------------------------------------------|
                                |  (a1)   |   |   #a1 = action 1
--------------------------------|---------|---|   
                                |  (a2)   |   |   #a2 = action 2
--------------------------------|---------|---|
                                |__(a3)___|   |
-----------------------------------------------

Если я нажму (3c): раскрывающееся меню будет отображаться выше (причуда), показывая не менее 2 раскрывающихся элементов.

----------------------------------------------
            Header                            |           
----------------------------------------------|
                                |  (a1)   |   |
--------------------------------|---------|---|         
                                |  (a2)   |   |
--------------------------------|_________|---|
                                        | (3c)|           
----------------------------------------|-----|
                                        |     |
----------------------------------------------

Мой обходной путь для этого:

  1. снимок экрана все элементы действий и

  2. if / elifs + dragDrop ()

что делает мои сценарии медленными (я выполняю сотни итераций каждый день)

Есть ли способ, которым я могу найти (a1) (потому что он всегда присутствует после нажатия (3)), сохранить его координаты и использовать его в качестве параметра для scrolldown_codes, как это

   #after clicking drop-down
   #find and get (action1) coordinates
   def scroll_down(coordinates):              #pass it here
       while not exist(action(n).png):        #n = action choice 
          end_Y = coordinates
          start_Y = coodinates - few_Y
          dragdrop(start_Y, end_Y)
          wait(1)
       click(action(n).png)

Пожалуйста, помогите мне! Не стесняйтесь предложить что-нибудь полезное!

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

1 ответ

Решение

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

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

  1. Разделите экран, если вы знаете, что искомые шаблоны ожидаются только в определенной области.

  2. Относительный поиск / Расширение региона. Вы можете найти соответствующий пункт (3) и затем развернуть область вправо, чтобы захватить область, в которой находится селектор (4) (3 точки). Это значительно ускорит поиск, так как он будет смотреть только на небольшую область, а не на весь экран, и это гарантирует, что вы нажимаете правильный (4) элемент. Больше информации и примеров о расширении региона здесь. Подробнее об оптимизации времени поиска здесь.

Теперь к фактическому выбору пункта в меню. Итак, как я уже упоминал, я считаю, что вам лучше использовать клавиатуру для выбора элемента. Это означает, что нужно выбрать / щелкнуть первый элемент в списке, а затем нажать кнопку со стрелкой вниз. x раз, пока вы не достигнете пункта меню вы после. Есть несколько способов правильно нажать кнопку со стрелкой вниз:

  1. Жесткий код это. Если вы знаете, что данный элемент занимает четвертое место в списке, просто нажмите 4 раза.

  2. Нажимайте кнопку со стрелкой вниз, пока не дойдете до нужного элемента. Это может быть немного медленнее и может потребовать создания дополнительных снимков экрана, но может оказаться полезным, если вы не знаете, в каком порядке находятся элементы, или если это может измениться.

Другие вопросы по тегам