Python TKinter, Selenium 및 threading throwing driver not defined 오류

칼윈

프로그램이 실행되고 있지만 버튼 (minknapp2)에서 스크립트를 실행할 때마다 TKinter는 스크립트가 완료 될 때까지 응답을 중지합니다. 몇 가지 조사를했는데 스레딩을 사용해야하기 때문에 스크립트가 실행되는 동안 TKinter와 상호 작용할 수 있다는 사실을 알게되었습니다.

내 프로그램을 문제라고 생각하는 2 개의 파일로 분리했습니다. 한 파일은 TKinter를 실행하고 두 번째 파일은 내 Selenium 스크립트를 실행합니다. filename1은 NyceGui.py입니다. filename2는 webreader.py입니다.

Tkinter 파일은 다음과 같습니다.

from tkinter import *
import webreader as wr


root = Tk()


#Skapa labels
minLabel1 = Label(root, text = "Nyce automation Gui")
minLabel2 = Label(root, text = "Automatisera processer")
minLabel3 = Label(root, text = "Flytta artikel")
minLabel4 = Label(root, text = "Artikelnummer: ")
minLabel5 = Label(root, text = "Från: ")
minLabel6 = Label(root, text = "Till: ")

#Skapa knappar
minKnapp1 = Button(root, text = "Öppna Nyce", command=wr.startaNyce)
minKnapp2 = Button(root, text = "Bekräfta aktiv order", command=wr.bekräfta
minKnapp3 = Button(root, text = "Bekräfta småplock aktiv order", command=wr.bekräftaSmå)
minKnapp4 = Button(root, text = "AVBRYT SCRIPT", command=wr.stopp, bg ="red")

#Skapa textfält
mittText1 = Entry(root)
mittText2 = Entry(root)
mittText3 = Entry(root)

#Visa på skärm
minLabel1.grid(row=0, column=0)
minLabel2.grid(row=1, column=0)
minKnapp1.grid(row=2, column=0)
minKnapp2.grid(row=3, column=0)
minKnapp3.grid(row=4, column=0)
minKnapp4.grid(row=1, column=3)
minLabel3.grid(row=6, column=1)
minLabel4.grid(row=7, column=0)
mittText1.grid(row=7, column=1)
minLabel5.grid(row=8, column=0)
mittText2.grid(row=8, column=1)
minLabel6.grid(row=8, column=2)
mittText3.grid(row=8, column=3)




    root.mainloop()

그리고 Selenium 파일은 다음과 같습니다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import sys



def startaNyce():
    global driver
    driver = webdriver.Chrome(executable_path=r'./chromedriver.exe')
    driver.get("http://awebpage.com")


def bekräfta():
    orange = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'nl-forms-wp-orange')]")))
    try:
        while orange:
            text = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'form-control nl-forms-wp-orange id-requisiteinfo-input-riLocation')]"))).get_attribute("value")
            search = driver.find_element_by_xpath("//input[contains(@value, 'Skanna lagerplats')]")
            search.send_keys(text)
            search.send_keys(Keys.RETURN)
            search2 = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'nl-forms-wp-orange id-requisiteinfo-input-riQuantity')]")))
            search.send_keys(Keys.RETURN)

    except KeyboardInterrupt:
        sys.exit()


def bekräftaSmå():
    orange = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'nl-forms-wp-orange')]")))
    try:
        while orange:
            text = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'nl-forms-wp-orange id-requisiteinfo-input-riLocation')]"))).get_attribute("value")
            search = driver.find_element_by_xpath("//input[contains(@value, 'Skanna lagerplats')]")
            search.send_keys(text)
            search.send_keys(Keys.RETURN)
            search.send_keys(Keys.RETURN)
            text = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'nl-forms-wp-orange')]"))).get_attribute("value")
            search2 = driver.find_element_by_xpath("//input[contains(@value, 'Skanna fack')]")
            search2.send_keys(text)
            search.send_keys(Keys.RETURN)

    except KeyboardInterrupt:
        sys.exit()

def stopp():
    sys.exit()

그래서 가져 오기 스레딩을 추가하는 첫 번째 코드에서 시도했습니다.

이 블록을 테스트 해보세요 (minknapp2).

from tkinter import *
import webreader as wr
import threading


root = Tk()


#Skapa labels
minLabel1 = Label(root, text = "Nyce automation Gui")
minLabel2 = Label(root, text = "Automatisera processer")
minLabel3 = Label(root, text = "Flytta artikel")
minLabel4 = Label(root, text = "Artikelnummer: ")
minLabel5 = Label(root, text = "Från: ")
minLabel6 = Label(root, text = "Till: ")

#Skapa knappar
minKnapp1 = Button(root, text = "Öppna Nyce", command=wr.startaNyce)
minKnapp2 = Button(root, text = "Bekräfta aktiv order",   command=threading.Thread(target=wr.bekräfta).start())

그러나이 오류가 발생합니다.

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\Python38-32\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "\webreader.py", line 17, in bekräfta
    orange = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[contains(@class, 'nl-forms-wp-orange')]")))
NameError: name 'driver' is not defined

이제 나는 메인 프로그램 외부에서 스레드를 시작하기 때문에 어딘가에서 읽었습니다. 이 부분에 대해 약간의 단서가 없으므로 도움을 주시면 감사하겠습니다.

소설

아주 간단한 수정은 명령에서 ()를 제거하기 만하면됩니다.

minKnapp2 = Button(root, text = "Bekräfta aktiv order",   command=threading.Thread(target=wr.bekräfta).start)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Python 2.7, Selenium 및 PhantomJS 오류

TkInter의 Python 오류 및 예외

Selenium 및 python의 Bluetooth 어댑터 오류

Selenium Python 오류

Python 3 pylab에서 Matplotlib로 플로팅 : Tkinter 및 Qt FontManager 오류

닫을 때 tkinter 및 스레딩 오류가있는 Python 앱

Tkinter, Threading 및 After 메서드 사용

Selenium :: WebDriver :: Firefox 및 Chrome 오류

python 및 ipython threading.activeCount ()

NameError : name 'threading'is not defined will run Python Program in Terminal

Python, tkinter 팝업 창 오류

PhantomJS 및 Python 오류

Python 및 XML 오류

Python Tkinter에서 이미지 크기 조정 및 이미지 오류

sqlite3 및 python Tkinter에 이메일 문자열 삽입 오류

Python : Selenium 및 PhantomJS

Python Selenium의 StaleElementReferenceException 오류

Windows의 Python Selenium Webdriver 오류

Python Selenium XPath Traceback 오류

오류 : Selenium Python의 ElementNotInteractableException

Python Selenium driver.execute_script WebDriverException : 메시지 : 알 수없는 오류 : '값'이 누락 된 함수 호출 결과

Not able to get the text with selenium web driver in python

Python 및 Selenium: ElementClickInterceptedException: 메시지: 요소 클릭 가로채기 오류

SyntaxError : Selenium 및 Python에서 xpath를 사용하는 잘못된 구문 오류

Pycharm Python Selenium driver.switch_to.default_content() 및 request.clsdriver = 드라이버 구문

Python 'NameError : name' 'is not defined'오류 python 2.7.12

Selenium 및 Python을 통해 expected_conditions와 함께 WebDriverWait를 사용하는 selenium.common.exceptions.TimeoutException 오류

Tkinter 및 Python 목록

Python tkinter Mac 및 Windows

TOP 리스트

  1. 1

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  2. 2

    MDRotatingPieChart를 회전하면 각도 대신 x / y 위치가 변경됩니다.

  3. 3

    c # 웹 사이트에서 텍스트를 복사하는 방법 (소스 코드 아님)

  4. 4

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  5. 5

    ArrayBufferLike의 typescript 정의의 깊은 의미

  6. 6

    Ionic 2 로더가 적시에 표시되지 않음

  7. 7

    복사 / 붙여 넣기 비활성화

  8. 8

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    QT Designer를 사용하여 GUI에 이미지 삽입

  11. 11

    java Apache POI Word 기존 테이블 셀 스타일 및 서식이있는 행 삽입

  12. 12

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  13. 13

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  14. 14

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  15. 15

    어떻게 같은 CustomInfoWindow 다른 이벤트를 할 수 있습니다

  16. 16

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  17. 17

    dataSnapShot.getValue () 반환 데이터베이스에 그겁니다 데이터 종료 널 (null)

  18. 18

    ORA-12557 TNS : 프로토콜 어댑터를로드 할 수 없습니다

  19. 19

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  20. 20

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  21. 21

    C # Asp.net 웹 API-JSON / XML 변환기 API 만들기

뜨겁다태그

보관