pyautogui: LocateOnScreen возможно с логическим значением true / false? - PullRequest
0 голосов
/ 05 декабря 2018

Редактировать: кажется, что проблема проистекает из следующих строк:

apply = pyautogui.locateOnScreen("apply.png")
if apply is not None:
    x, y = pyautogui.locateCenterOnScreen('apply.png')
    pyautogui.click(x,y)

есть ли в любом случае сделать это так, чтобы вы могли запустить оператор if, чтобы проверить, есть ли изображение?

Предупреждение: очень новое для python

Моя цель - автоматизировать подачу заявок на самом деле .ca, используя последнюю версию Firefox, полностью развернутое окно.Пока я просто работаю над 1 страницей, а код не идеален.Он запускается, нажимает на первую вакансию, находит оранжевую кнопку «Применить сейчас» справа, нажимает на нее, которая открывает форму, заполняет форму, загружает резюме, нажимает на продолжение, затем применяет клики, которые отправляют окончательную форму.

У меня 2 проблемы:

  1. Я не уверен, как сказать программе: если это изображение существует где-либо на странице.вместо этого у меня есть if apply is not None:, который я не уверен, работает ли он или нет.Я только знаю, что if applynow == None: работает.

  2. Я выполнил тест на одной из должностей, он должен был его передать, но дал мне сообщение об ошибке «Ошибка типа: не могураспаковать не повторяемый объект NoneType ", что означает, что изображение не существует ... Это здорово, но эта часть находится в операторе else, а не в начальном операторе if.Первоначальный оператор if должен был сработать первым ... поэтому предполагалось, что он просто нажимает «применить» вместо того, чтобы проходить через оператор «else», так что либо изображение «apply» не обнаружено, либо python должен пройти через оператор «else»перед выполнением, которое портит выполнение, если это имеет какой-то смысл.Я не уверен, с какой проблемой я столкнулся, поэтому любая помощь приветствуется.

ошибка:

    x, y = pyautogui.locateCenterOnScreen('continue2.png')
TypeError: cannot unpack non-iterable NoneType object

ссылка: https://www.indeed.ca/jobs?q=engineer&l=Vancouver%2C%20BC&start=40&vjk=64c9d891c652bd2b

import pyautogui, time

pyautogui.PAUSE = 1
pyautogui.FAILSAFE = True
time.sleep(5)
pyautogui.click(863,330)

applynow = pyautogui.locateOnScreen("applynow.png")
confirmyourapplication = pyautogui.locateOnScreen("confirmyourapplication.png")
confirmonnextpage = pyautogui.locateOnScreen("confirmonnextpage.png")
howmanyyears = pyautogui.locateOnScreen("howmanyyears.png")
apply = pyautogui.locateOnScreen("apply.png")

for i in range (0, 9):
    if applynow == None:
        pyautogui.scroll(-425)
        x, y = pyautogui.position()
        pyautogui.click(x,y)
    else:
        x, y = pyautogui.locateCenterOnScreen('applynow.png')
        pyautogui.click(x,y)
        pyautogui.press('tab')
        pyautogui.press('tab')
        pyautogui.typewrite('Jake Williams', 0.25)
        pyautogui.press('tab')
        pyautogui.typewrite('jwilliam02@hotmail.com', 0.25)
        pyautogui.press('tab')
        pyautogui.typewrite('719-985-3546', 0.25)
        x, y = pyautogui.locateCenterOnScreen('browse.png')
        pyautogui.click(x,y)
        pyautogui.typewrite('resume', 0.25)
        pyautogui.press('enter')
        x, y = pyautogui.locateCenterOnScreen('continue.png')
        pyautogui.click(x,y)
        time.sleep(2)
        ## insert function here
        if apply is not None:
            x, y = pyautogui.locateCenterOnScreen('apply.png')
            pyautogui.click(x,y)
            x, y = pyautogui.locateCenterOnScreen('close.png')
            pyautogui.click(x,y)
        else:
            for j in range (0, 3):
                if howmanyyears is not None:
                    x, y = pyautogui.locateCenterOnScreen('howmanyyears.png')
                    pyautogui.click(x,y)
                    pyautogui.typewrite('3', 0.25)
            x, y = pyautogui.locateCenterOnScreen('continue2.png')
            pyautogui.click(x,y)
            time.sleep(2)
            x, y = pyautogui.locateCenterOnScreen('apply.png')
            pyautogui.click(x,y)
            x, y = pyautogui.locateCenterOnScreen('close.png')
            pyautogui.click(x,y)

1 Ответ

0 голосов
/ 05 января 2019

попробуйте использовать этот код:

#code before if statement here  
#the code below is an if statement replacement  
#tab button on my keyboard doesn't work, replacing it with spaces  
try:  
    x, y = pyautogui.locateCenterOnScreen('continue2.png')  
except TypeError:  
    #insert code to run if the image isn't located  
else:  
    #insert code to run if the image is located  
finally:  
    #insert rest of program here
...