我正试图在python中创建自己的模块,该模块使用selenium执行操作,但我很难导入变量



以下是迄今为止我所拥有的:

我的模块名为myModule,对于我正在导入的每个名为"actions"one_answers"xpaths"的模块,我都有init.py的子目录。

from myModule import actions

在";动作";我有一个名为siteLogin的函数,我想使用我的模块中另一部分名为xpaths:的变量

from textLayer import xpaths
def siteLogin(webdriver, user, pass):
webdriver.get('https://www.youtube.com')
webdriver.find_element_by_xpath(xpaths.loginButtonXPath).click()

最后在textLayer中,我有xpaths:

loginButtonXPath = '//*[@id="button"]'

但是当我尝试从命令行运行这个代码时,

from selenium import webdriver
from myModule import actions
driver = webdriver.Firefox()
driver.implicitly_wait(10)
siteUser = 'myUsername'
sitePass = 'myPassword'
actions.siteLogin(driver, siteUser, sitePass)

我收到一个错误,说明

NameError:名称"loginButtonXPath"未定义

我也尝试从命令行导入xpath,但没有成功。有效的方法是在不使用变量的情况下输入字符串,但我希望能够使用变量,以便将来可以更改它。

同时进入

print(xpaths.loginButtonXPath)

如果我在主代码中导入"xpath",则可以按预期打印字符串。

提前感谢您的任何见解。

尝试将每个init.py文件重命名为__init__.py

由于某种原因,当我从函数中删除"driver.get(…("部分并单独调用它时,其余部分似乎可以工作。我不确定确切的原因,但我想稍后会有另一个问题需要回答。目前,解决方案是将点击(以及用户名和密码输入等(与其自身功能隔离。此外,我在实际的python命令行中导入了变量,而不是在函数"actions">init.py中导入,但我不确定这是否重要。

最新更新