python selenium|请求输入,将其输出到网站



这是我第一次在这里发帖,如果我犯了任何错误,很抱歉。。总之:

我在学校的网站上有这个脚本,它输入了我的登录信息,并勾选了一些基本上意味着我感觉很好(而且我没有感染新冠肺炎(的内容。

我想把这个发给我在学校的朋友,但我不想把代码给他们,因为我担心他们会碰它,把事情搞砸。。。所以我想做一些简单的事情,比如:我使用tkinter 制作的简单GUI

问题是,我不知道如何将我从那里得到的输入存储到一个变量中,然后在脚本中调用,将其打印到学校网站上。。这是我的代码:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
import tkinter as tk
def show_entry_fields():
print("Username: %snPassword: %s" % (e1.get(), e2.get()))
master = tk.Tk()
tk.Label(master,
text="Username").grid(row=0)
tk.Label(master,
text="Password").grid(row=1)
e1 = tk.Entry(master)
e2 = tk.Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
username = e1.get()
password = e2.get()
tk.Button(master, 
text='Go', 
command=master.quit).grid(row=3, 
column=0, 
sticky=tk.W, 
pady=4)

tk.mainloop()

#opens the browser & website
browser = webdriver.Chrome(executable_path=r"D:DocumentsMashovHaxarat Briutchromedriver.exe")
browser.maximize_window()
browser.get("blah blah blah")
time.sleep(2)
#types the school name
school = browser.find_element_by_xpath("//input[@id='mat-input-3']")
school.send_keys("blah blah bla")
school.send_keys(Keys.ENTER)
time.sleep(2)

#types username
username = browser.find_element_by_xpath("//*[@id='mat-input-0']")
username.send_keys(username)
username.send_keys(Keys.ENTER)
time.sleep(2)

#types password
password = browser.find_element_by_xpath('//*[@id="mat-input-4"]')
password.send_keys(password)
password.send_keys(Keys.ENTER)
time.sleep(2)

如果有人有任何建议,或任何帮助,我将非常感谢!祝你假期愉快!

编辑:如果有一种简单的方法来存储这些数据,这样他们就不必每次打开程序时都输入。。那也会很有帮助(基本上,他们第一次打开程序时,它会询问登录详细信息,然后下次打开时,它就会自动转到网站,甚至不询问您的登录详细信息(

我的建议是创建一个名为"自动登录配置";或者什么的,在一个容易找到的地方。让你的脚本检查一个名为"的文本文件的存在;autologin.txt";或者类似的东西。如果它不存在,创建它,询问用户名并将其写入文件。然后写一个换行符(\n(,并询问密码。将其附加到文件的第二行。如果该文件确实存在,或者在创建后,自动转到学校的网站并从";C: \Users\User\Desktop\autologin config\autologin.txt"或者你的文件的名称,并使用它们登录。

最好使用加密。话虽如此,我还是自由地制作了一个模板,使用自行生成的CSV文件来存储用户信息,以达到您的目的。

我建议把我在下面写的东西拆开,根据你的需要进行自我调整。

import tkinter as tk
import csv 
import os 
class Window(tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
self.root = root 
self.username = "" 
self.password = ""
# Some random consant file name
self.USER_PROFILE = 'user-profile.csv' 
# Entries 
self.username_entry = tk.Entry(self.root)
self.password_entry = tk.Entry(self.root)
# Buttons
self.go_button = tk.Button(self.root, command=self.goPressed, text='Go')

def setUI(self):
# Labels
tk.Label(self.root, text='Username').grid(row=0, column=0)
tk.Label(self.root, text='Password').grid(row=1, column=0)
# Entries
self.username_entry.grid(row=0, column=1)
self.password_entry.grid(row=1, column=1)
#Buttons
self.go_button.grid(row=3, column=0, sticky=tk.W, pady=4)
def show(self):
self.setUI()
def goPressed(self):
self.updateUserProfile()
self.root.quit()
def updateUserProfile(self):
self.username = self.username_entry.get()
self.password = self.password_entry.get()
# Create the user profile file if it doesn't exist
if not os.path.isfile(self.USER_PROFILE):
# Make sure user filled the entries
if self.username and self.password:
with open(self.USER_PROFILE, 'w', newline='') as up:
writer = csv.writer(up)
# Write the row for the user name into the file 
writer.writerow(['username', self.username])
# and password...
writer.writerow(['password', self.password])
# Otherwise, a profile already exists, I would modify this to
# change the username and password if say, a "change username or password"
# checkbox is set. 
else:
# Read the user profile
with open(self.USER_PROFILE, 'r') as up:
reader = csv.reader(up)
# Read user info into selenium.
# Right here I just have it write into the entry, but
# it should be easy for you to change that to a selenium entry.
for line in reader:
if line[0] == 'username':
self.username = line[1]
self.username_entry.insert(0, self.username)
elif line[0] == 'password':
self.password = line[1]
self.password_entry.insert(0, self.password)

def main():
root = tk.Tk()
window = Window(root)
window.show()
root.mainloop()
#opens the browser & website
browser = webdriver.Chrome(executable_path=r"D:DocumentsMashovHaxarat 
Briutchromedriver.exe")
browser.maximize_window()
browser.get("blah blah blah")
time.sleep(2)
#types the school name
school = browser.find_element_by_xpath("//input[@id='mat-input-3']")
school.send_keys("blah blah bla")
school.send_keys(Keys.ENTER)
time.sleep(2)
#types username
username = browser.find_element_by_xpath("//*[@id='mat-input-0']")
username.send_keys(window.username)
username.send_keys(Keys.ENTER)
time.sleep(2)
#types password
password = browser.find_element_by_xpath('//*[@id="mat-input-4"]')
password.send_keys(window.password)
password.send_keys(Keys.ENTER)
time.sleep(2)
if __name__ == '__main__':
main()

最新更新