Tkinter selenium.common.exceptions.InvalidArgumentException:



所以我写一个简单的硒脚本做一些动作在网络上。脚本工作得很好,出于无聊,我决定让它有一个GUI,以及。我不知道我做错了什么。它启动了chrome web驱动程序,但gui从未运行。

from tkinter import *
from selenium import webdriver
browser = webdriver.Chrome()
root = Tk()

root.geometry('285x179')
root.configure(background='#F0F8FF')
root.title('MC Vote')

pageField=Entry(root)
pageField.place(x=74, y=26)

voteField=Entry(root)
voteField.place(x=75, y=75)

page=pageField.get()
upvoteCSS=voteField.get()
accounts = ['1','2','3','4']
browser.get(page)
browser.maximize_window()

def btnClickFunction():
for i in accounts:
upvoteButton = browser.find_element_by_css_selector(upvoteCSS)
upvoteButton.click()
browser.get(page)

Button(root, text='Start bot', bg='#F0F8FF', font=('arial', 12, 'normal'), command=btnClickFunction).place(x=99,y=124)
root.mainloop()
Traceback (most recent call last):
File "C:UsersPycharmProjectsTrainingaccounts.py", line 36, in <module>
browser.get(page)

GUI不像input()那样工作。当你创建pageField(),然后它不会等待你的文本。它只通知tkinter它必须显示什么小部件。当你运行mainloop()时,它会创建窗口并显示小部件。因此,您尝试从pageField获取值,甚至在窗口中显示pageField之前。您必须使用Button来运行函数,该函数在您将文本放入pageField并按下按钮后从pageField获取值。

最小的例子

import tkinter as tk  # PEP8: `import *` is not preferred
from selenium import webdriver
# --- functions --- (PEP8: lower_case_names)
def btn_click_function():
page = pageField.get()
upvote_css = vote_field.get()

browser.get(page)
browser.maximize_window()

for _ in range(4):
upvote_button = browser.find_element_by_css_selector(upvote_css)
upvote_button.click()
browser.get(page)
# --- main --- (PEP8: lower_case_names)
browser = webdriver.Chrome()
root = tk.Tk()
page_field = tk.Entry(root)
page_field.pack()
vote_field = tk.Entry(root)
vote_field.pack()
button = tk.Button(root, text='Start bot', command=btn_click_function)
button.pack()
root.mainloop()

PEP 8——Python代码风格指南

相关内容

最新更新