gpt4 book ai didi

python - 全局名称 'wd' 未在 Python 中定义

转载 作者:行者123 更新时间:2023-11-30 23:07:30 26 4
gpt4 key购买 nike

我有两个脚本。一个是 funcLib.py,我在其中定义了所有可重用的函数,如下所示:

import os
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.common.action_chains import ActionChains
import time

global wd


def deviceSelection():
desired_caps = {}
desired_caps['appium-version'] = '1.0'
desired_caps['platformName'] = 'iOS'
desired_caps['platformVersion'] = '8.2'
desired_caps['deviceName'] = 'iPhone 6'
desired_caps['app'] = os.path.abspath('/Users/admin/Library/Developer/Xcode/DerivedData/testapp-sdsdsdfsdf/Build/Products/Debug-iphonesimulator/testApp.app')
wd = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
wd.implicitly_wait(60)
return wd

def fnaccepttermsandconditions():
time.sleep(5)
wd.find_element_by_name("Accept").click()
time.sleep(5)

在这里,我定义了自动化的所有功能。另一个文件是我的脚本文件,我在其中调用这些函数以在自动化中使用。它被称为 testfile.py

import os
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.common.action_chains import ActionChains
import datetime
import time
import sys
sys.path.append('/Users/Desktop/iOS/Global Scripts/')
from funcLib import *


wd = deviceSelection();

def main():
signin();


def signin():

try:
time.sleep(5)
fnaccepttermsandconditions()
time.sleep(5)

main()

现在,当我执行 testfile.py 时,它尝试调用函数 fnaccepttermsandconditions() 并失败并显示错误消息 - 全局名称“wd”未定义我不确定我哪里做错了,但我也尽力了。

实际上, future 我将在 funcLib.py 中包含许多必须调用“wd”的函数。那么在这种情况下我需要如何声明 wd.请帮忙

最佳答案

问题是你如何看待 python 的全局变量。删除 global wd 行,因为该行只能在函数内部使用,以表示正在使用的变量是全局变量。

有两种方法可以实现你想要的,我建议根本不使用全局变量,而只是根据需要传递变量,这是下面的代码。

更改fnaccepttermsandconditions以接受变量wd

def fnaccepttermsandconditions(wd):
time.sleep(5)
wd.find_element_by_name("Accept").click()
time.sleep(5)

并将其传递到 testfile.py

def signin(): 

try:
time.sleep(5)
fnaccepttermsandconditions(wd)
time.sleep(5)

另一种方法是先将全局变量设置为 None,然后在函数中引用它。

wd = None 


def deviceSelection():
global wd
# you could also remove the "return wd" here then as well if making it a global
...

def fnaccepttermsandconditions():
global wd
...

编辑:另外,欢迎使用 Python!希望您喜欢它,记住您可以删除所有“;”从行尾开始。

关于python - 全局名称 'wd' 未在 Python 中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com