我有一个脚本可以在PythonAnywhere上运行我的Telegram机器人。我的PythonAnywhere帐户是免费的,但有限制,它会在24小时或更短的时间后重新启动,我不确定确切的时间,我的机器人也会关闭。所以,我做了一个脚本,让它在24小时后从我的PC上自动运行。当我正常运行脚本时,它工作得很好。但当我把它放在启动列表中自动运行时,它没有运行。当我把它放到crontab列表中后,它仍然没有运行。
这是我的剧本
#!/usr/bin/env python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from datetime import datetime as dt
from credentials import username, password
import time
import notify2
# Open a web browser and navigate to the website
driver = webdriver.Firefox()
wait = WebDriverWait(driver, 20)
driver.get("https://www.pythonanywhere.com/login/?next=/")
# Locate the login form and enter user & pass, then click on login
wait.until(EC.presence_of_element_located((By.ID, "id_next")))
driver.find_element(By.ID, "id_auth-username").send_keys(username)
driver.find_element(By.ID, "id_auth-password").send_keys(password)
driver.find_element(By.ID, "id_next").submit()
# Locate the bot link and click on it and wait to load the console
wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "NoNameCh")))
driver.find_element(By.PARTIAL_LINK_TEXT, "NoNameCh").click()
# Locate the run button and click on it then quit the browser and wait
driver.find_element(By.CSS_SELECTOR, "button.btn-info.run_button").click()
time.sleep(20)
driver.quit()
# Show notification
notify2.init("Automation")
notification = notify2.Notification("Bot Started!")
notification.set_timeout(10)
notification.show()
# Write a result in the file
path = "~/Dropbox/Projects/python/mypy/automation/result.txt"
with open(path, "a") as f:
f.write(str(dt.today()) + "\n")
我做了另一个脚本,并把它放在crontab列表中。这个脚本在运行时,返回一个特定文件中的一个单词,我知道它开始了。每隔24小时,第二个脚本将返回结果,但我的主脚本不会做任何事情。
这是第二个脚本:
#!/usr/bin/env python
path = "~/Dropbox/Projects/python/mypy/automation/result.txt"
with open(path, "a") as f:
f.write("test file...\n")
这是两天后的结果文件:
2023-01-08 18:04:07.526809
test file...
test file...
当我手动运行脚本时,第一行已经附加了。通常,我应该得到两个结果(脚本运行的时间和"测试文件...")。
有什么问题吗?
1条答案
按热度按时间axr492tv1#
我找到了答案,一个使用GUI元素的脚本在crontab中是不会工作的,因为crontab中的脚本在终端中运行,我还没有找到自动运行我的脚本的方法,我还在寻找......