一个使用Python加入在线类的Bot给出了无效的名称错误



这是我的代码:

#importing necessary modules for our program.
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
#Fill In Your email and password in the CREDS dictionary.
CREDS = {"email" : "9714@sindhimodel.in", "password" : "DhruvSev2006"}
URL = "https://teams.microsoft.com"
def start_browser():
#This Function Will Start Your Browser.
PATH = "C:Program Files (x86)chromedriver.exe"
chrome = webdriver.Chrome(PATH)
chrome.get(URL)
print("Browser Opened. n")
login()
def login():
#This Function Will Login To Your Account, Using The CREDS dictionary.
time.sleep(2)
print("Logging In To Your Account. n")
EmailField = chrome.find_element_by_id("i0116")
EmailField.send_keys(CRED['email'])
next = chrome.find_element_by_id("idSIButton9")
next.click()
time.sleep(2)
pswd = chrome.find_element_by_id("i0118")
pswd.send_keys(CRED['password'])
sign_in = chrome.find_element_by_id("idSIButton9")
sign_in.click()
time.sleep(2)
web_app = chrome.find_element_by_class_name("use-app-lnk")
web_app.click()
time.sleep(5)
print("Logged In To Your Account. n")
def change_class():
#This Function Is Related To My School And My Classes. You Can Delete It. :)
print("Changing Format Of Classes. n")
clas = input("which Class Do You Want To Join: ")
classes = [["maths", "english", "p/c", "biology", "csc", "social"], ["hindi"]]
if clas in classes[0]:
clas = "Class:9:All Subjects Except Hindi"
elif clas in classes[1]:
clas = "Class:9:Hindi"
else:
clas = ""
raise KeyError("Class Not Found :(")
return clas
def know_class():
#This Will Ask The User For The Class, Which The User Wants To Join.
clas = change_class()
if clas == "Class:9:All Subjects Except Hindi":
team = "9 General"
elif clas == "Class:9:Hindi":
team = "9 HINDI General"
else:
team = ""
def join_other_class():
general_9 = chrome.find_element_by_title_name("ts-ongoing-call-header is-call-message")
general_9.click()
start_browser()
know_class()
join_other_class()

在login((函数(第20行(中给出错误,在start_browser((函数中调用时(第79行(。

chrome = webdriver.Chrome(PATH)

给出的错误(当在Windows中运行命令提示符(CMD(中的代码时(是:

Traceback (most recent call last):
File "C:UsersDHRUVDesktopNew foldero.py", line 79, in <module>
start_browser()
File "C:UsersDHRUVDesktopNew foldero.py", line 20, in start_browser
login()
File "C:UsersDHRUVDesktopNew foldero.py", line 27, in login
EmailField = chrome.find_element_by_id("i0116")
NameError: name 'chrome' is not defined

请帮我一下。我已经定义了chrome,但它仍然会出错。仍然代码尚未完成,但仍然想检查代码是否有效。

还请给出改进代码的方法。这只是匆匆写的。而且我还是个初学者

提前感谢

chromestart_browser()中的局部变量。

如果你想在其他方法login()中访问它,你有几个选项:

  1. 将其作为参数传递
  2. 使用全局变量(如果是第一次赋值,则可能需要在函数中使用global关键字(
  3. 编写一个类并使chrome成为实例属性,这样就可以在使用self.chrome的所有其他实例方法中访问它,而不是单独的函数

我个人的偏好是选项3,但你可以选择任何你想要的选项,甚至可以选择与我的建议完全不同的选项。

您要做的是将chrome指定为全局变量,您可以通过两种不同的方式来做到这一点,首先是将此代码放在函数之外,并使其成为所有函数(如(都可用的变量

PATH = "C:Program Files (x86)chromedriver.exe"
chrome = webdriver.Chrome(PATH)
def start_browser():
...

或者通过这个

def start_browser():
#This Function Will Start Your Browser.
PATH = "C:Program Files (x86)chromedriver.exe"
global chrome
chrome = webdriver.Chrome(PATH)
chrome.get(URL)
print("Browser Opened. n")
login()

在这里你可以找到更多关于全局变量的信息

最新更新