Python: PyAutoIt: control_click

Решение проблемы

После некоторых попыток я обнаружил, что вызывает проблему. background-position перестает работать, когда фон является таким же большим (или большим), как и его фрейм. Вот почему решение dognose работает. Он удаляет background-size.

Как доказательство, я изменил CSS .br -фрагмы и .br .bg-image на следующее:

.br {
    top:calc(100% - 340px - 30px);
    left:calc(100% - 300px - 30px);
}
.br .bg-image {
    background-position: calc(100% + 30px) calc(100% + 30px); 
    /* 100% puts it bottom right, + 30px offset from .br */
    background-position: right -30px bottom -30px;
    /* or simply use this */
    height: 100%;
    width: 100%;
    background-size: 800px 600px;
}

Таким образом background-size больше не равен кадру, заставляя background-position работать так, как предполагается.

См. скрипт

. почему

Причина, по которой она не работает с процентами, связана с тем, что background-position в буквальном смысле зависит от background-size. Поскольку background-position: 0% 0%; находится сверху слева, а background-position: 100% 100%; находится справа внизу. Если фоновое изображение является таким же большим, как и содержащий фрейм, разница между 0% и 100% больше не существует.

Используя эту теорию в сочетании с calc(), все, что она делает, это:

calc(100% - 340px - 30px) поместите его вправо (100%), который вообще не перемещает его, а затем переместите его влево 370px (-340px - 30px).

В ваш случай идет вправо, потому что вы префикс right перед вашим calc().

0
задан Sikh Name 16 January 2019 в 05:15
поделиться

2 ответа

control_click не использует курсор мыши.

mouse_click использует курсор мыши.

control_click аргументы из файла справки AutoItX.chm :

"title", "text", "controlID" [, button [, clicks [, x [, y ]]]]

, из которых имена необязательных аргументов совпадают с **kwargs. [ 1122]

Аргументы PyAutoIt из библиотеки для control_click:

"title", "control" [, **kwargs]

, где **kwargs - необязательные именованные аргументы.

**kwargs принимает именованные аргументы. то есть text="some text in the window"

Чтобы щелкнуть в элементе управления, вы можете использовать то есть:

autoit.control_click("[CLASS:Notepad]", "Edit1", x=1097, y=832)

В библиотеке код, который вы разместили, имена для **kwargs:

text = kwargs.get("text", "")
button = kwargs.get("button", "left")
clicks = kwargs.get("clicks", 1)
x = kwargs.get("x", INTDEFAULT)
y = kwargs.get("y", INTDEFAULT)

Он хранится в виде словаря, а метод .get используется для получения значения. Если вы передадите text="some text in the window", то text равно some text in the window, иначе будет равна пустой строке, представленной в библиотеке как "", что является значением по умолчанию.

0
ответ дан michael_heath 16 January 2019 в 05:15
поделиться

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

import autoit

autoit.run("notepad.exe")
autoit.win_wait_active("[CLASS:Notepad]", 3)
autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}")
autoit.win_close("[CLASS:Notepad]")
autoit.mouse_click("left",272,70)

Выше кода будет щелкнуть левой кнопкой мыши по кнопке Не сохранять . Если у вас установлено autoit, вы можете использовать AutoIt Window info(x86) или AutoIt Window info(x64), чтобы получить полную информацию об объектах Windows.

Дайте мне знать, если ответ выше полезен или нет.

0
ответ дан Jitendra Banshpal 16 January 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: