python - selenium 浏览器用keyboard.read_key() 关闭
问题描述
为什么 selenium 浏览器在第 207 行(keyboard.read_key()
)运行时关闭?
该代码昨天正常工作
import datetime as dt
import sys
from time import sleep
import keyboard
import os
from posixpath import dirname
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
filePath = os.path.dirname(__file__)
driverName = "chromedriver.exe"
path = os.path.join(filePath, driverName)
#handle your connection is not private
options = webdriver.ChromeOptions()
options.add_argument('--ignore-ssl-errors=yes')
options.add_argument('--ignore-certificate-errors')
options.add_experimental_option("prefs", { \
"profile.default_content_setting_values.media_stream_mic": 1
})
options.add_experimental_option('excludeSwitches', ['enable-logging'])
username = "30200360086"
password = "Nima1383*"
usernameLoginXPath = '//*[@id="username"]'
passwordLoginXPath = '//*[@id="password"]'
singinButtonLoginXPath = '//*[@id="loginbtn"]'
statusBarSpanXPath = '//span[@id="status_bar_span"]'
loginClassButtonXPath = '//*[@id="join_button_input"]'
microphoneOpenedXPath = "/html/body/div[2]/div/div/div[1]/header/h3"
microphoneButtonXPath = '/html/body/div[2]/div/div/div[1]/div/div/span/button[1]'
microphoneButtonXPath = '/html/body/div[2]/div/div/div[1]/div/div/span/button[1]'
microphoneOpenedYesXPath = "/html/body/div[2]/div/div/div[1]/header/h3"
microphoneOpenedYesButtonXPath = "/html/body/div[2]/div/div/div[1]/div/span/button[1]"
microphoneXPath = '//*[@id="tippy-190"]'
classOpenedText = "This conference is in progress."
microphoneOpenedText = "چنانچه مایل هستید تا از امکانات صوتی ذیل استفاده کنید، روی آن کلیک نمایید."
microphoneOpenedYesText = "این آزمایش اکوی صدای شخصی است. چند کلمه صحبت کنید. ایا صدا را می شنوید؟"
mocrophoneOffText = "حالت بی صدا"
zaminShenasi = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1219"
tarikhMoaser = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1220"
amarVaEhtemal = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1226"
hesaban = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1225"
hendese = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1224"
negaresh = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1227"
farsi = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1228"
arabi = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1229"
dini = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1230"
fizik = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1222"
shimi = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1223"
zaban = "https://lms.helli3.ir/mod/bigbluebuttonbn/view.php?id=1221"
webBrowser = "google-chrome"
weekName = ["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
schoolWeekName = ["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday"]
startSchoolTime = "08:00"
endSchoolTime = "14:35"
startSchoolTimeHour = 7
endSchoolTimeHour = 14
zang1 = "08:00"
zang2 = "09:40"
zang3 = "11:20"
zang4 = "14:15"
isOpen = False
hotkey = "shift + ctrl + F2"
lesson = 1
isPress = False
df = dt.datetime.today()
clearConsole = lambda: os.system('cls' if os.name in ('nt', 'dos') else 'clear')
clearConsole()
def openClass(username, password, lessonName):
driver = webdriver.Chrome(executable_path = path, options=options)
driver.get(lessonName)
usernameInput = driver.find_element_by_xpath(usernameLoginXPath)
passwordInput = driver.find_element_by_xpath(passwordLoginXPath)
loginButton = driver.find_element_by_xpath(singinButtonLoginXPath)
usernameInput.send_keys(username)
passwordInput.send_keys(password)
loginButton.click()
# statusBarSpan = driver.find_element_by_xpath(statusBarSpanXPath)
while driver.find_element_by_xpath(statusBarSpanXPath).text != classOpenedText:
clearConsole()
# print(statusBarSpan.text)
print(driver.find_element_by_xpath(statusBarSpanXPath).text)
sleep(5)
driver.find_element_by_xpath(loginClassButtonXPath).click()
driver.switch_to.window(driver.window_handles[1])
microphoneOpened = ""
while microphoneOpened != microphoneOpenedText:
try:
microphoneOpened = driver.find_element_by_xpath(microphoneOpenedXPath).text
except:
sleep(1)
driver.find_element_by_xpath(microphoneButtonXPath).click()
microphoneOpened = ""
while microphoneOpened != microphoneOpenedYesText:
try:
microphoneOpened = driver.find_element_by_xpath(microphoneOpenedYesXPath).text
except:
sleep(1)
driver.find_element_by_xpath(microphoneOpenedYesButtonXPath).click()
sleep(1)
microphone = driver.find_element_by_xpath('//button[@accesskey="M"]')
if microphone.get_attribute("aria-label") == mocrophoneOffText:
microphone.click()
if df.strftime("%A") in schoolWeekName:
while int(df.strftime("%H")) >= startSchoolTimeHour and int(df.strftime("%H")) <= endSchoolTimeHour:
if df.strftime("%A") == schoolWeekName[0]:
if df.strftime("%H:%M") == zang1 and isOpen == False:
openClass(username, password, farsi)
isOpen = True
elif df.strftime("%H:%M") == zang2 and isOpen == False:
openClass(username, password, hesaban)
isOpen = True
elif df.strftime("%H:%M") == zang3 and isOpen == False:
openClass(username, password, negaresh)
isOpen = True
elif df.strftime("%H:%M") == zang4 and isOpen == False:
openClass(username, password, amarVaEhtemal)
isOpen = True
elif df.strftime("%H:%M") != zang1 and df.strftime("%H:%M") != zang2 and df.strftime("%H:%M") != zang3 and df.strftime("%H:%M") != zang4:
isOpen = False
if df.strftime("%A") == schoolWeekName[1]:
if df.strftime("%H:%M") == zang1 and isOpen == False:
openClass(username, password, fizik)
isOpen = True
elif df.strftime("%H:%M") == zang2 and isOpen == False:
openClass(username, password, tarikhMoaser)
isOpen = True
elif df.strftime("%H:%M") == zang3 and isOpen == False:
openClass(username, password, hendese)
isOpen = True
elif df.strftime("%H:%M") == zang4 and isOpen == False:
openClass(username, password, hendese)
isOpen = True
elif df.strftime("%H:%M") != zang1 and df.strftime("%H:%M") != zang2 and df.strftime("%H:%M") != zang3 and df.strftime("%H:%M") != zang4:
isOpen = False
if df.strftime("%A") == schoolWeekName[2]:
if df.strftime("%H:%M") == zang1 and isOpen == False:
openClass(username, password, zaminShenasi)
isOpen = True
elif df.strftime("%H:%M") == zang2 and isOpen == False:
openClass(username, password, shimi)
isOpen = True
elif df.strftime("%H:%M") == zang3 and isOpen == False:
openClass(username, password, dini)
isOpen = True
elif df.strftime("%H:%M") == zang4 and isOpen == False:
openClass(username, password, shimi)
isOpen = True
elif df.strftime("%H:%M") != zang1 and df.strftime("%H:%M") != zang2 and df.strftime("%H:%M") != zang3 and df.strftime("%H:%M") != zang4:
isOpen = False
if df.strftime("%A") == schoolWeekName[3]:
if df.strftime("%H:%M") == zang1 and isOpen == False:
openClass(username, password, hesaban)
isOpen = True
elif df.strftime("%H:%M") == zang2 and isOpen == False:
openClass(username, password, shimi)
isOpen = True
elif df.strftime("%H:%M") == zang3 and isOpen == False:
openClass(username, password, hesaban)
isOpen = True
elif df.strftime("%H:%M") == zang4 and isOpen == False:
openClass(username, password, arabi)
isOpen = True
elif df.strftime("%H:%M") != zang1 and df.strftime("%H:%M") != zang2 and df.strftime("%H:%M") != zang3 and df.strftime("%H:%M") != zang4:
isOpen = False
if df.strftime("%A") == schoolWeekName[4]:
if df.strftime("%H:%M") == zang1 and isOpen == False:
openClass(username, password, fizik)
isOpen = True
elif df.strftime("%H:%M") == zang2 and isOpen == False:
isOpen = True
elif df.strftime("%H:%M") == zang3 and isOpen == False:
openClass(username, password, fizik)
isOpen = True
elif df.strftime("%H:%M") == zang4 and isOpen == False:
openClass(username, password, zaban)
isOpen = True
elif df.strftime("%H:%M") != zang1 and df.strftime("%H:%M") != zang2 and df.strftime("%H:%M") != zang3 and df.strftime("%H:%M") != zang4:
isOpen = False
sleep(1)
df = dt.datetime.today()
clearConsole()
print(f"{100 * chr(8)}{df.strftime('%H:%M:%S')}", end="", flush=True)
if keyboard.read_key() == hotkey:
clearConsole()
print("ZaminShenasi <--|\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
while keyboard.is_pressed("enter") == False:
if keyboard.is_pressed("up") and isPress == False:
isPress = True
lesson -= 1
if lesson < 1:
lesson = 1
elif keyboard.is_pressed("down") and isPress == False:
isPress = True
lesson += 1
if lesson > 12:
lesson = 12
elif keyboard.is_pressed("up") == False and keyboard.is_pressed("down") == False:
isPress = False
if lesson == 1 and isPress == True:
clearConsole()
print("ZaminShenasi <--|\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 2 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser <--|\nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 3 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal <-|\nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 4 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban <-------|\nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 5 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese <-------|\nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 6 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh <------|\nFarsi \nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 7 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi <---------|\nArabi \nDini \nFizik \nShimi \nZaban ")
elif lesson == 8 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi <---------|\nDini \nFizik \nShimi \nZaban ")
elif lesson == 9 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini <----------|\nFizik \nShimi \nZaban ")
elif lesson == 10 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik <---------|\nShimi \nZaban ")
elif lesson == 11 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi <---------|\nZaban ")
elif lesson == 12 and isPress == True:
clearConsole()
print("ZaminShenasi\nTarikhMoaser \nAmarVaEhtemal \nHesaban \nHendese \nNegaresh \nFarsi \nArabi \nDini \nFizik \nShimi \nZaban <---------|")
sleep(0.05)
if lesson == 1:
openClass(username, password, zaminShenasi)
elif lesson == 2:
openClass(username, password, tarikhMoaser)
elif lesson == 3:
openClass(username, password, amarVaEhtemal)
elif lesson == 4:
openClass(username, password, hesaban)
elif lesson == 5:
openClass(username, password, hendese)
elif lesson == 6:
openClass(username, password, negaresh)
elif lesson == 7:
openClass(username, password, farsi)
elif lesson == 8:
openClass(username, password, arabi)
elif lesson == 9:
openClass(username, password, dini)
elif lesson == 10:
openClass(username, password, fizik)
elif lesson == 11:
openClass(username, password, shimi)
elif lesson == 12:
openClass(username, password, zaban)
clearConsole()
sys.exit()
解决方案
推荐阅读
- python - 如何修复 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- python - ValueError: int() 的无效文字,以 10 为基数:'one'
- java - JFrame 导出到 Jar 时扩展
- c# - outOfRange 的扫雷异常
- node.js - 评论未显示在页面上
- react-native - 没有redux的react native中的connectycube聊天实现图
- hazelcast-jet - HazelcastSerializationException:当 Jet 作业在多个集群上运行时
- javascript - 在 ReactJS 中将 props 传递给弹出窗口
- python - 如何使用 tensorflow 打印预测
- html - 避免 HTML 网格中的死 DIV