0

我正在开发一个 python 脚本来输入一些公司网站并提取我需要的数据。所以我有两种脚本,第一种是执行自动化过程,第二种是“父”脚本,我使用runpy运行第一种脚本和tkinter.simpledialog.askstring询问用户他们的登录名和密码。我面临的问题是我需要存储用户的输入(我收集在我的“父”脚本中)并在我的自动化脚本中使用它。这是我的“父”脚本:

import runpy
import pyautogui
import pyperclip
import tkinter as tk
import tkinter.simpledialog

pyautogui.PAUSE=1

tk.Tk().withdraw()
login=tkinter.simpledialog.askstring("Login","Enter login", show="")
password=tkinter.simpledialog.askstring("Password","Enter password", show="*")
time.sleep(2)
runpy.run_path('path to my automation script')

如您所见,它只是存储用户的输入并运行另一个脚本。下面是另一种类型的脚本,它位于“我的自动化脚本的路径”上。

from selenium import webdriver
import pyforest
import time
import pandas
import openpyxl
import pyautogui
from Parent_Script import login, password

driver=webdriver.Chrome(executable_path='path to chromedriver',options=options)
driver.get('corporative website')

login_website=driver.find_element_by_xpath('//*[@id="txtLogin"]')
login_website.send_keys(login)
password_website=driver.find_element_by_xpath('//*[@id="txtPassword"]')
password_website.send_keys(password)

我正在尝试导入我的父脚本变量登录名和密码,但作为用户,我必须填充 tkinter 对话框两次(我认为第一次填充是因为我运行父脚本而第二次填充是在父脚本运行时自动化脚本,因此它重新运行父脚本来执行变量导入)。有没有更好(或正确)的方法让它有效地工作?

4

1 回答 1

0

在等待答案时,我找到了解决方案。嗯,有点

我从“父”脚本中删除了所有tkinter内容,并创建了一个名为“Login_Password”的模块。这个模块的整个脚本是:

import tkinter as tk
import tkinter.simpledialog

tk.Tk().withdraw()
login=tkinter.simpledialog.askstring("Login","Enter login", show="")
password=tkinter.simpledialog.askstring("Password","Enter password", show="*")

然后我将我的 Login_Password 模块从 Python 移动到站点包的路径,以便能够将其作为模块导入到我的自动化脚本中,现在它工作正常。

于 2021-12-13T16:55:09.617 回答