【发布时间】:2020-09-25 00:13:44
【问题描述】:
我目前正在使用带有 Python 的 WinAppDriver 为专有的 Windows 桌面应用程序编写自动化脚本。我们的应用程序让用户上传一些文件,根据上传的文件进行一些幕后计算,然后输出结果。我有使用 UI 上传这些文件的自动化,并且对此没有任何问题。这样做的过程如下:
单击“选择文件”按钮。在弹出窗口中浏览到文件位置
单击“文件名”字段并输入文件的直接路径。单击确定(这是通过 Python 键盘库完成的)
对所有必要的文件重复前面的步骤
点击“开始”
为了整理我的脚本,我将文件路径设置为变量,而不是在我的代码中使用它们的直接路径。然后我只调用我需要的文件的变量名。
例如file_to_upload_1: str = r”C:\Users\user\...\filename.txt
我创建了一个单独的filePaths.py,其中存储了所有这些设置为变量的文件路径,因此将来添加/修改它们很容易,而且都在一个地方。
我遇到的所有这些问题是当我import 这个.py 包含我的文件路径设置为变量时。现在,为了简单起见,我正在做from filePaths import *。这通常是不受欢迎的,VS Code 会向我发出警告,建议我导入了未使用的导入。我继续将变量设置为单独的类,然后尝试通过以下方式导入它们:from filePaths import dataset_1 当我这样做时,我收到以下错误:Undefined variable “variable_name” 并且我的测试无法运行。似乎只有导入所有内容才能使这一切正常工作,并且如果可能的话,我想避免这样做。我所有的脚本都在同一个目录中。我在这里错过了什么?
代码示例:
from filePaths import * <-- THIS WORKS!
# from filePaths import class_1 <-- THIS DOES NOT
#Open App
desired_caps = {}
desired_caps["app"] = "C:\\Users\\Public\\Desktop\\Application_Being_Tested.lnk"
driver = webdriver.Remote("http://127.0.0.1:4723", desired_caps)
#Login
driver.find_element_by_accessibility_id("Username").send_keys("tester")
driver.find_element_by_accessibility_id("UserPassword").send_keys("password")
driver.find_element_by_accessibility_id("btnLogin").click()
###Upload Files###
#First File To Upload
driver.find_element_by_accessibility_id("ChooseFile").click()
time.sleep(.1)
driver.find_element_by_accessibility_id("FileName").click()
keyboard.write(filePaths_variable)
keyboard.press_and_release('enter')
【问题讨论】:
-
很可能,
from filepaths.filename import class_call -
filePaths.py在这种情况下是实际的文件名,当我尝试导入包含一组选定变量的类时,我会出错。
标签: python visual-studio-code module automation winappdriver